← 返回首页
JavaScript中数组去重的几种方法
发表时间:2023-02-11 13:41:36
JavaScript中数组去重的几种方法

JavaScript中数组去重的几种方法

1.indexOf

let citys = ['北京','广州',NaN,'上海','深圳','北京','西安','上海',NaN];
let newArr=[];

for(let i=0;i<citys.length;i++){
    if(newArr.indexOf(citys[i]) === -1){
        newArr.push(citys[i]);
    }
}

console.log(newArr);

运行结果:

[
  '北京', '广州',
  NaN,    '上海',
  '深圳', '西安',
  NaN
]

这种方式的弊端是对于NaN类型,Symbol等类型无法去重。

2.includes

let citys = ['北京','广州',NaN,'上海','深圳','北京','西安','上海',NaN];
let newArr=[];

for(let i=0;i<citys.length;i++){
    if(!newArr.includes(citys[i])){
        newArr.push(citys[i]);
    }
}

console.log(newArr);

运行结果:

[ '北京', '广州', NaN, '上海', '深圳', '西安' ]

3.Set

let citys = ['北京','广州',NaN,'上海','深圳','北京','西安','上海',NaN];

const newArr = Array.from(new Set(citys));


console.log(newArr);

运行结果:

[ '北京', '广州', NaN, '上海', '深圳', '西安' ]

4.filter


let citys = ['北京','广州',NaN,'上海','深圳','北京','西安','上海',NaN];

const newArr = citys.filter((e,i)=>citys.indexOf(e,0) === i);

console.log(newArr);

运行结果:

[ '北京', '广州', '上海', '深圳', '西安' ]

5.Map


let citys = ['北京','广州',NaN,'上海','深圳','北京','西安','上海',NaN];

let map = new Map();
let newArr=[];


for(let i=0;i<citys.length;i++){
    if (map.has(citys[i])) {
        continue;
    } else {
        map.set(citys[i], true)
        newArr.push(citys[i])
    }
}

console.log(newArr);

运行结果:

[ '北京', '广州', NaN, '上海', '深圳', '西安' ]