共计 961 个字符,预计需要花费 3 分钟才能阅读完成。
近期常常遇到数组去重的问题,因而整顿一下用到的办法
一、简略数组去重
1. 利用 indexOf 去重,办法的弊病是如果是字符串有可能会不行,比方:ass 和 asssd,有一个另一个就会被判重
// 用 indexOf
let newArr = []
arr.forEach(item => {if(newArr.indexOf(item) === -1){newArr.push(item)
})
}
2. 双层循环
3. 数组的 find 办法:参数是一个回调函数,回调函数的参数是数组的每一项,返回的是只有数组里有一项就返回 true
if (!this.preconditionData.preconditionList.find(item => item.tag_id === precondObj.tag_id && item.tag_type === precondObj.tag_type)) {this.preconditionData.preconditionList.push(precondObj)
}
4. 数组的 filter 办法,返回一个新数组,会把原来数组中符合要求的项过滤掉
this.preconditionData.preconditionList.filter(item => item.tag_type !== type)
5. 数组的 sort 办法
unction unique(arr) {if (!Array.isArray(arr)) {console.log('type error!')
return;
}
arr = arr.sort()
var arrry= [arr[0]];
for (var i = 1; i < arr.length; i++) {if (arr[i] !== arr[i-1]) {arrry.push(arr[i]);
}
}
return arrry;
}
var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
console.log(unique(arr))
// [0, 1, 15, "NaN", NaN, NaN, {…}, {…}, "a", false, null, true, "true", undefined] //NaN、{}没有去重
正文完
发表至: javascript
2022-03-08