ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
Array.from方法可以将 Set 结构转为数组。
例如:
const items = new Set([1, 2, 3, 4, 5]);
const array = Array.from(items);
利用这些特点可以得出两种数组去重的方法:
方法一:利用展开运算符和Set成员的唯一性
let arr = [1, 2, 3, 2, 1];
function unique(arr){
return [...new Set(arr)];
}
console.log(unique(arr)) // [1, 2, 3]
方法二:利用Array.from和Set成员的唯一性
let arr = [1, 2, 3, 2, 1];
function unique(arr){
return Array.from(new Set(arr));
}
console.log(unique(arr)) // [1, 2, 3]
注:ES5数组去重
方法一: 利用对象key唯一性
var arr = [1, 2, 3, 2, 1];
Array.prototype.unique = function(){
var res = [];
var json = {};
for(var i = 0; i < this.length; i++){
if(!json[this[i]]){
res.push(this[i]);
json[this[i]] = true;
}
}
return res;
}
console.log(arr.unique()) // [1, 2, 3]
方法二:利用indexOf
var arr = [1, 2, 3, 2, 1];
function unique(arr){
var res = [];
for(var i = 0; i < arr.length; i++){
if(res.indexOf(arr[i]) === -1){
res.push(arr[i])
}
}
return res;
}
console.log(unique(arr)); // [1, 2, 3]