重温前端基础之-数组去重


var
arr = [1,2,3,4,1,2,3,4,5,6,3,2]
/*
es6的set特性
*/
[...new Set(arr)]
/*思路:将数组转化为key:value的Object类型,
key和value都是数组当前项
利用Object的key重复赋值会覆盖前面的值的特性*/

var obj = {};
for(item of arr){
  obj[item] = item;
}
console.log(Object.values(obj))

for(key in {1:11,2:22,3:33}){
  console.log(key)
}
/*思路:利用filter的第三个参数,总是返回indexOf匹配的第一个元素,
后面的重复元素与index位置不同,直接过滤掉,*/
var newArr = arr.filter((item,index,arr)=>{
  return arr.indexOf(item)===index
})
console.log(newArr)

/*
新建空数组
*/
var newArr1 = [];
arr.forEach((item,index,arr)=>{
    if (newArr1.indexOf(item)===-1){
      newArr1.push(item);
    }
})
console.log(newArr1)


/*
使用arr的reduce方法,利用reduce的第二个参数,初始值
*/
var newArr3 = arr.reduce((prev,next)=>{
  if(prev.indexOf(next)===-1){
    prev.push(next)
  }
  return prev;
},[]);
console.log(newArr3)
  
原文地址:https://www.cnblogs.com/HappyYawen/p/8527025.html