数组去重的几种方法
先介绍两种比较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)]; //两行代码直接实现去重
想做一定有方法,不想做一定有理由。