let arr = [1, 2, 2, 3, 4, 5];
方法一:使用es6的Set结构去重, Array.from可以将Set结构转化为普通数组
推荐指数:五颗星
let uniqeArr1 = (arr) => {
return Array.from(new Set(arr));
}
uniqeArr1(arr);
方法二:使用indexOf去重,利用indexOf只会查找第一次的索引值
推荐指数:四颗星
let uniqeArr2 = (arr) => {
let res = [];
for (let i = 0; i < arr.length; i++) {
if (res.indexOf(arr[i]) < 0) {
res.push(arr[i]);
}
}
return res;
}
uniqeArr2(arr);
方法三:使用es6的filter去重,原理也是利用indexOf只会查找第一次的索引值
推荐指数:四颗星
let uniqeArr3 = (arr) => {
return arr.filter((item, index) => {
return arr.indexOf(item) == index;
})
}
uniqeArr3(arr);
方法四:使用哈希去重,利用对象健值的唯一性向数组push不重复的值
推荐指数:三颗星
let uniqeArr4 = (arr) => {
let res = [],
hash = {};
for (let i = 0; i < arr.length; i++) {
if (!hash[arr[i]]) {
res.push(arr[i]);
hash[arr[i]] = true;
}
}
return res;
}
uniqeArr4(arr);
方法五:方法四的变种,使用es6中的Map结构去重, 此处也可以使用Set结构,set.add添加即可
推荐指数:三颗星
let uniqeArr5 = (arr) => {
let res = [],
map = new Map();
for (let i = 0; i < arr.length; i++) {
if (!map.has(arr[i])) {
res.push(arr[i]);
map.set(arr[i], true);
}
}
return res;
}
uniqeArr5(arr)
网友评论