var arr = [1,1,1,1,2,2,2,1,1,6,6,8,9,47,589]
function array(array){
var tem = {};
var newArr = [];
var len = array.length;
for(var i=0; i<len;i++){
if(!tem[array[i]]){
tem[array[i]] = 'true';
newArr.push(array[i]);
}
}
return newArr;
}
上述代码主要使用了hash的方式去完成数组去重,原理是 第一次tem[array[0]]----》undefined,等我们取反进入if判断后立即把tem[array[0]]附上一个值(该值不能为0或js校验为false的值),现在tem变成
{
1 : "true"
}
当取到tem[array[1]]时,发现tem[array[1]]为tem[1],tem[1]的值为"true",因此if判断不会放行,后面的依次如上,最终完成数组去重
{
1 : "true",
2:"true"
}
如果数组里面是对象,如果要判断两个数组,一个数组要去除另一个数组里面的对象,例如:
let a= [{name:'liyang';uuid:12345},{name:'zhangfei';uuid:25364}]
let b = [{name:'liyang';uuid:12345},{name:'wanger';uuid:54861}{name:'zhangfei';uuid:25364},{name:'zhuge';uuid:14587}]
let device = []
for(let j=0;j<b.length;j++){
let count=0
for(let i=0;i<a.length;i++){
if(a[i].name !== b[j].name)){
count++
}
if(count == a.length){
device.push({
'name':b[j].name,
'uuid':b[j].uuid
})
}
}
}
二 、es6最新语法得出来的方法
function dedupe(array) {
return Array.from(new Set(array));
}
dedupe([1, 1, 2, 3]) // [1, 2, 3]
版权声明:本文为博主原创文章,未经博主允许不得转载。https://mp.csdn.net/postedit/79575751