Heim >häufiges Problem >So entfernen Sie Duplikate aus dem JS-Array

So entfernen Sie Duplikate aus dem JS-Array

百草
百草Original
2023-07-05 11:32:401764Durchsuche

js数组去重的方法:1、ES6提供的“new Set()”方法;2、“filter()”方法;3、使用for循环,搭配“indexOf()”方法;4、将数组的每一个元素依次与其他元素比较,有重复元素就删除;5、创建新的空数组,使用“indexOf()”方法判断当前元素在数组中的索引,如果与循环的下标相同则添加到新数组中;6、双重for循环;7、“includes()”方法。

So entfernen Sie Duplikate aus dem JS-Array

本教程操作系统:windows10系统、JavaScript ECMAScript 2023版本、DELL G3电脑。

1、借助ES6提供的Set结构 new Set() 简单好用 强烈推荐

直接给一个新的数组里面,利用es6的延展运算符

 var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];
 
  console.log(arr);   
 
  function noRepeat(arr){
 
    var newArr = [...new Set(arr)]; //利用了Set结构不能接收重复数据的特点
 
    return newArr
 
  }
 
  var arr2 = noRepeat(arr)
 
  console.log(arr2);

2、利用 filter() 去重

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。item是当前元素的值,index是当前元素的索引值。indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。利用indexOf() 查询到数组的下标,看是否等于当前的下标,相等的话就返回,否则不返回值。

var arr = ['apple','apps','pear','apple','orange','apps'];
 
console.log(arr)    
  var newArr = arr.filter(function(item,index){
     return arr.indexOf(item) === index;  // 因为indexOf 只能查找到第一个  
  });
 
console.log(newArr);

3、利用for 循环 搭配 indexOf 去重

 var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];
 function noRepeat(arr) {
//定义一个新的临时数组 
var newArr=[]; 
//遍历当前数组 
for(var i=0;i<arr.length;i++) {
  //如果当前数组的第i已经保存进了临时数组,那么跳过,
  //否则把当前项push到临时数组里面 
  if(newArr.indexOf(arr[i]) === -1) {  //indexOf() 判断数组中有没有字符串值,如果没有则返回 -1 
     newArr.push(arr[i]);
  }
    }
    return newArr
  }
  var arr2 = noRepeat(arr);
  console.log(arr2);

4、将数组的每一个元素依次与其他元素做比较,发现重复元素,删除 比较繁琐 不推荐

 var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];
 console.log(arr);    
 function noRepeat(arr) {
        for(var i = 0; i < arr.length-1; i++){
            for(var j = i+1; j < arr.length; j++){
                if(arr[i]===arr[j]){
                    arr.splice(j,1);
                    j--;
                }
            }
        }
        return arr;
 }
 var arr2 = noRepeat(arr);
 console.log(arr2);

5、借助新数组 通过 indexOf 方法判断当前元素在数组中的索引,如果与循环的下标相等则添加到新数组中

var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];
    console.log(arr)    
    function noRepeat(arr) {
        var newArr = [];
        for (var i = 0; i < arr.length; i++) {
            if (arr.indexOf(arr[i]) == i) {
              newArr.push(arr[i]);
            }
        }
        return newArr;
    }
   var arr2 = noRepeat(arr);
   console.log(arr2);

6、利用双重for循环

var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];
console.log(arr);    
function noRepeat(arr){
   for (var i = 0; i < arr.length; i++) {
       for (var j = 0; j < arr.length; j++) {
           if (arr[i] == arr[j] && i != j) { //将后面重复的数删掉
              arr.splice(j, 1);
            }
       }
    }
    return arr;
}
var arr2  = noRepeat(arr);
console.log(arr2);

7、利用includes实现数组去重

var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];
    function noRepeat(arr) {
      let newArr = [];
      for(i=0; i<arr.length; i++){
        if(!newArr.includes(arr[i])){
            newArr.push(arr[i])
        }
      }
     return newArr
   }
 console.log(noRepeat(arr));

Das obige ist der detaillierte Inhalt vonSo entfernen Sie Duplikate aus dem JS-Array. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was bedeuten Produktparameter?Nächster Artikel:Was bedeuten Produktparameter?