hash
利用对象的属性不能相同的特点进行去重
缺点:因为 js 里对象的属性名只能是字符串,所以 true 和 ‘true’,会被认为是同一个。
function unique(array) {
let Array= []
let hash = {} // {1: true, 2: true}
for(let i = 0; i < array.length; i++){
if(!hash[array[i]]){
Array.push(array[i])
hash[array[i]] = true;
}
}
return Array;
}
var array = [1,5,2,3,4,2,3,1,3,4];
console.log(unique(array))
利用ES6 Set去重(ES6中最常用)
ES6中新增了数据类型set,set的一个最大的特点就是数据不重复。Set函数可以接受一个数组(或类数组对象)作为参数来初始化,利用该特性也能做到给数组去重
优点:代码最少
缺点:兼容性、无法去掉“{}”空对象
function unique (array) {
return Array.from(new Set(array))
}
var array = [1,5,2,3,4,2,3,1,3,4];
console.log(unique(array))
利用Map数据结构去重
创建一个空Map数据结构,遍历需要去重的数组,把数组的每一个元素作为key存到Map中。由于Map中不会出现相同的key值,所以最终得到的就是去重后的结果
function arrayNonRepeatfy(arr) {
let map = new Map();
let array = new Array(); // 数组用于返回结果
for (let i = 0; i < array.length; i++) {
if(map .has(array[i])) { // 如果有该key值
map .set(array[i], true);
} else {
map .set(array[i], false); // 如果没有该key值
array .push(array[i]);
}
}
return array ;
}
var array = [1,5,2,3,4,2,3,1,3,4];
console.log(unique(array))