1.哈希思想
var arr = [1,2,3,4,2,2,4];
//把数组各项当做对象的属性
//若对象中没有属性,就添加到新数组中
//若有该属性,设置该属性值为true
function hash(arr) {
var obj = {};
var arr1 = [];
for (let item of arr){
if (!obj[item]){
arr1.push(item);
obj[item] = true;
}
}
return arr1;
}
console.log(hash(arr));
2. ES6 Set集合,值唯一,不重复
function set(arr) {
//2.1
/*var arr1 = new Set(arr);//Set(7)
return [...arr1];*/
//2.2
return Array.from(new Set([...arr]));
}
console.log(set(arr));
3.ES6 Array.filter():不会改变原数组
//indexOf返回元素出现第一次的索引位置,若不存在返回-1
function filter(arr) {
return arr.filter((elem,index)=>{
//若indexOf返回的索引与当前元素的index不匹配返回false说明已经出现过,过滤。若返回true,保留
return arr.indexOf(elem) == index;
})
}
console.log(filter(arr));