方法一:
// 字典方式:同查找数组中出现次数最多。
// 1: 借用对象属性方法,将数组中的元素添加为对象的属性,遍历数组元素的时候查询对象是否已经有该属性,如果有则不重复添加
var arr=[1,2,3,3,2,1,4];
//下标 0 1 2 3 4 5 6
// 声明一个空对象,来保存遍历数组的元素
var dict={};
// 遍历arr数组元素,每遍历一个元素,就把当前元素作为属性值添加到字典dict中,属性值随便写
for(var i=0;i<arr.length;i++){
dict[arr[i]]=1;
// arr[0]=1 => dict[1]=1
// arr[1]=2 => dict[2]=1
// arr[2]=3 => dict[3]=1
}
// console.log(dict);//Object {1: 1, 2: 1, 3: 1, 4: 1}
// 用字典的方式:不允许出现重复的下标:
// {
// 1:1
// 2:1
// 3:1 3:1 出现多个时就会覆盖掉
// 4:1
// }
// 遍历字典,仅获取属性名,不用属性值:
var res=[],i=0;
for(res[i++] in dict);
console.log(res);
// var res=[];
// var i=0;
// for(res[i] in dict){
// i++;
// }
// console.log(res);//Array(4) ["1", "2", "3", "4"]
方法二:ES6数组去重方法
Set实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员),
操作方法有:add(value)、delete(value)、has(value)、clear();
遍历方法有:keys()、values()、entries()、forEach()
1、ES6——new Set方法
const myArray = [1,1,2,2,3,3,4,4,5,5]
console.log([...new Set(myArray )]);// [1, 2, 3, 4, 5]
2、Array.from(该方法可以将 Set 结构转为数组)
function dedupe(array) {
return Array.from(new Set(array));
}
dedupe([1, 1, 2, 3]) // [1, 2, 3]
作者:Julian小龙虾
链接:https://www.jianshu.com/p/fef2f1e9b544
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。