数组去重

let originalArray = [1,2,3,4,5,3,2,4,1];

// 方式1
const result = Array.from(new Set(originalArray));
console.log(result); // -> [1, 2, 3, 4, 5]

// 方式2
const result = [];
const map = new Map();
for (let v of originalArray) {
    if (!map.has(v)) {
        map.set(v, true);
        result.push(v);
    }
}
console.log(result); // -> [1, 2, 3, 4, 5]

// 方式3
const result = [];
for (let v of originalArray) {
    if (!result.includes(v)) {
        result.push(v);
    }
}
console.log(result); // -> [1, 2, 3, 4, 5]

// 方式4
for (let i = 0; i < originalArray.length; i++) {
    for (let j = i + 1; j < originalArray.length; j++) {
        if (originalArray[i] === originalArray[j]) {
            originalArray.splice(j, 1);
            j--;
        }
    }
}
console.log(originalArray); // -> [1, 2, 3, 4, 5]

//方式5
function noRepeat(originalArray ){
     var newA = [];
     arr.forEach((val)=>{
          if(newA.indexOf(val)<0){
              newA.push(val)
           }
      })
      return newA
}                    //无法去重NaN
//方式6
 const unique = arr => {
       var obj = {}
       arr.forEach(value => {
                    obj[value] = 0;//这步新添加一个属性,并赋值,如果不赋值的话,属性会添加不上去
       })
        return Object.keys(obj);//`Object.keys(对象)`返回这个对象可枚举属性组成的数组,这个数组就是去重后的数组
}
console.log(unique(originalArray ))                

 

posted @ 2020-03-30 10:12  epoch丶  阅读(111)  评论(0编辑  收藏  举报