Js去重

米阳 2020-1-15 581 1/15

方法一: indexOf()方法

var newarr = [];
for (var i = 0; i < arr.length; i++){
  if (arr1.indexOf(arr[i]) == -1) {
    arr1.push(arr[i])
  }
}
//换一个遍历方式 同理用indexOf对比下标
arr.filter(function(item, index, arr) {
  //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
  return arr.indexOf(item, 0) === index;
})

 

方法二:两层循环+splice

for (var i = 0; i < arr.length; i++) {
  for (var j = i + 1; j < arr.length; j++) { 
    if (arr[i] == arr[j]) { 
      arr.splice(j, 1) 
      j--; 
    }
  } 
}

 

方法三:set(ES6)

去的是全等的数据,1和‘1’ 不重复

Array.from(new Set(arr))

 

方法四:includes (ES6)

用法和indexof差不多

var array =[]; 
for(var i = 0; i < arr.length; i++) { 
  if( !array.includes(arr[i]) ) {//includes 检测数组是否有某个值 
    array.push(arr[i]); 
  } 
}
PS:
  • 1、用对象属性不能相同的特点来去重的,感觉这样不太好就不写了
  • 2、用filter去重个人感觉不算是一种方法,用filter还是遍历,里面还得用indexOf比较下标

 

 

 

 

- THE END -

米阳

6月24日15:39

最后修改:2024年6月24日
0

非特殊说明,本博所有文章均为博主原创。