面试题十六:js/javascript数组去重
七娃博客787人阅读
js数组去重的方法有很多,例如:new Set()、includes、splice、indexOf、sort、hasOwnProperty、filter...等等,除了ES6的Set方法之外,原理都是通过判断新数组是否包含老数组的一项,不包含就添加到新数组中,否则进入下一个循环。
1.Set()方法
Set是es6新增的数据结构,key不能重复,存储任意类型的唯一值。缺点就是不能去空'{}'。
方法一:
let aa = Array.from(new Set(arr))
方法二:
let cc =[...new Set(arr)]
2.includes 方法,检测是否包含指定的子字符串。 匹配成功返回 true,否则返回 false
function unique(arr){
let newO = [];
for(let i = 0; i < arr.length; i++){
if(!newO.includes(arr[i])){
newO.push(arr[i])
}
}
return newO;
}
3.indexOf 方法,找到匹配项,返回所在的索引
function unique(arr){ let newO = []; for(let i = 0; i < arr.length; i++){ if( newO.indexOf(arr[i]) < 0){ newO.push(arr[i]) } } return newO; }
剩余的方法不啰嗦了,大致原理都是 符合条件,新增到新数组里面,重复扔掉!
[…] 最近在工作中用到数组去重,本来以为很简单的问题,Array.from和Set结合直接去重,然后发现没有变化!还以为这个去重方法不管用,又试了“去重大套餐”,发现全部NG。 […]
[…] 数组中第三列和第一列的名字重复,去掉第三列数据,这样就解决这个问题了。那么说一下常用的数组去重的方法: […]