近期经常遇到数组去重的问题,因此整理一下用到的方法
一、简单数组去重
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语言基础
- js基础知识小结
- 【JS30-Wes Bos】数组操作 04
- NFT 头像铸造|NFT 艺术品交易|NFT 商城开发
- 清除对象中没值的数据 unfined、null、[]、{}、''
- js 几种网络请求方式梳理——摆脱回调地狱
- 听说你对 JavaScript 中的输出挺熟()
- 【JS30-Wes Bos】钢琴琴键 01
- 前后端数据联调的三个小技巧,你一定要知道!