数组去重的几种方法

  先介绍两种比较LOW的方式

    1.

let ary=[1,2,3,1,2,3,3];
let newary=[];
//创建一个新数组保存不重复的元素
ary.forEach(item=>{
  if(newary.includes("item"))//includes存在兼容时问题,并且性能不好
    return;
  newary.push(item);
});

    2.直接使用splice

let ary = [1,2,3,2,1,4];
//直接在原数组操作
for(let i=0;i<ary.ength;i++){
  let compare = ary[i];
  for(let j=i+1;j<ary.length;j++)
    {
        if(compare===item)
          ary.splice(j,1);
          j--;//数组塌陷,不知道什么是数组塌陷可以参考我的上一篇随笔
    }    
}

  接下来介绍一种比较优秀的去重方式,基于对象处理

  

let ary=[1,2,3,3,2,1,23,2];
let obj={};
for(let i=0;i<ary.length;i++)
{
  let item = ary[i];
  if(obj[item]!==undefined)
{
//ary.splice(i,1); //i--;
//splice性能不好不建议使用
ary[i] = ary[ary.length-1];
ary.pop();
i--;
continue;
} obj[item]
= item;//而非obj.item=item,这边是将item的值作为属性,而 //非"item"作为属性。 }

   接下来介绍一种基于ES6语法的极简方式

let ary = [1,2,3,4,2,1,3];
ary = [...new Set(ary)];
//两行代码直接实现去重
原文地址:https://www.cnblogs.com/angle-xiu/p/11319200.html