以下是几种常见的 JavaScript 数组去重方法,每种方法都附有注释:
- 使用 Set:
// 方法1:使用 Set
const uniqueArrayUsingSet = (arr) => {
return [...new Set(arr)];
};
let arr = [1, 2, 3, 2, 4, 3];
console.log(uniqueArrayUsingSet(arr)); // [1, 2, 3, 4]
- 使用 filter 和 indexOf:
// 方法2:使用 filter 和 indexOf
const uniqueArrayUsingFilter = (arr) => {
return arr.filter((item, index) => {
return arr.indexOf(item) === index;
});
};
console.log(uniqueArrayUsingFilter(arr)); // [1, 2, 3, 4]
- 使用 reduce 和 includes:
// 方法3:使用 reduce 和 includes
const uniqueArrayUsingReduce = (arr) => {
return arr.reduce((unique, item) => {
return unique.includes(item) ? unique : [...unique, item];
}, []);
};
console.log(uniqueArrayUsingReduce(arr)); // [1, 2, 3, 4]
- 使用 for 循环:
// 方法4:使用 for 循环
const uniqueArrayUsingForLoop = (arr) => {
let unique = [];
for (let i = 0; i < arr.length; i++) {
if (unique.indexOf(arr[i]) === -1) {
unique.push(arr[i]);
}
}
return unique;
};
console.log(uniqueArrayUsingForLoop(arr)); // [1, 2, 3, 4]
- 使用 Map:
// 方法5:使用 Map
const uniqueArrayUsingMap = (arr) => {
let map = new Map();
arr.forEach(item => {
if (!map.has(item)) {
map.set(item, true);
}
});
return [...map.keys()];
};
console.log(uniqueArrayUsingMap(arr)); // [1, 2, 3, 4]
- 使用 sort 和 filter:
// 方法6:使用 sort 和 filter
const uniqueArrayUsingSort = (arr) => {
arr.sort();
return arr.filter((item, index) => {
return item !== arr[index - 1];
});
};
console.log(uniqueArrayUsingSort(arr)); // [1, 2, 3, 4]
除了前面提到的方法,这里还有几种其他的 JavaScript 数组去重的方法:
- 使用 Object 键值对:
// 方法7:使用 Object 键值对
const uniqueArrayUsingObject = (arr) => {
let unique = {};
arr.forEach(item => {
unique[item] = true;
});
return Object.keys(unique).map(Number);
};
console.log(uniqueArrayUsingObject([1, 2, 3, 2, 4, 3])); // [1, 2, 3, 4]
- 使用 ES6 Map 配合 forEach:
// 方法8:使用 ES6 Map 配合 forEach
const uniqueArrayUsingES6Map = (arr) => {
let map = new Map();
arr.forEach(item => {
if (!map.has(item)) {
map.set(item, true);
}
});
return Array.from(map.keys());
};
console.log(uniqueArrayUsingES6Map([1, 2, 3, 2, 4, 3])); // [1, 2, 3, 4]
- 使用 includes 和 forEach:
// 方法9:使用 includes 和 forEach
const uniqueArrayUsingIncludes = (arr) => {
let unique = [];
arr.forEach(item => {
if (!unique.includes(item)) {
unique.push(item);
}
});
return unique;
};
console.log(uniqueArrayUsingIncludes([1, 2, 3, 2, 4, 3])); // [1, 2, 3, 4]
- 使用 for…of 和 Set:
// 方法10:使用 for...of 和 Set
const uniqueArrayUsingForOfAndSet = (arr) => {
let unique = new Set();
for (let item of arr) {
unique.add(item);
}
return Array.from(unique);
};
console.log(uniqueArrayUsingForOfAndSet([1, 2, 3, 2, 4, 3])); // [1, 2, 3, 4]
- 使用 lodash 库的 uniq 方法:
// 方法11:使用 lodash 库的 uniq 方法
const _ = require('lodash');
const uniqueArrayUsingLodash = (arr) => {
return _.uniq(arr);
};
console.log(uniqueArrayUsingLodash([1, 2, 3, 2, 4, 3])); // [1, 2, 3, 4]
12将数组的每一个元素依次与其他元素做比较,发现重复元素,删除
1.将数组的每一个元素依次与其他元素做比较,发现重复元素,删除
var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5,5];
console.log(arr); //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5, 5, 5, 5]
function noRepeat1(arr) {
for(var i = 0; i < arr.length-1; i++){
for(var j = i+1; j < arr.length; j++){
if(arr[i]===arr[j]){
arr.splice(j,1);
j--;
}
}
}
return arr;
}
var arr2 = noRepeat1(arr);
console.log(arr2); //[1, 23, 3, 5, 6, 7, 9, 8]
© 版权声明
THE END
暂无评论内容