1、ES6
ES6提供了新的数据结构,Set,类似于数组,但是成员唯一,不重复,本身是一个构造函数,利用这个特性就可以实现去重
前提
let arr = [1,2,3,1,2,3];
let str = 'asdfasdf';
console.log([...new Set( [1,NaN,1,3,NaN,{},{}])]);
// 控制台输出:[1, NaN, 3, {}, {}]
console.log([...new Set(str)].join(''));
// 控制台输出:asdf
console.log(Array.from(new Set([1,NaN,1,3,NaN,{},{}])));
1、在Set中,NaN是相等的,{}是不相等的,另外注意Set参数只能是iterable类型的,所以对象会报错。
2、indexOf
let res = arr.filter((item, index, self) => {
return self.indexOf(item) === index;
});
// [1,2,3]
同时for循环,forEach也是可以的
3、includes
let res = [];
arr.forEach((item) => {
if (!res.includes(item)){
res.push(item);
}
});
4、对象属性
let obj = {};
let res = [];
arr.forEach((item) => {
if (!obj.item) {
obj.item = item;
res.push(item);
}
});
网友评论