在 JavaScript 中有多种方法可以实现数组去重,下面介绍几种常用的方法:
const array = [1, 2, 3, 2, 4, 1, 5];
const uniqueArray = [...new Set(array)];
console.log(uniqueArray); // [1, 2, 3, 4, 5]
const array = [1, 2, 3, 2, 4, 1, 5];
const uniqueArray = array.filter((item, index) => array.indexOf(item) === index);
console.log(uniqueArray); // [1, 2, 3, 4, 5]
const array = [1, 2, 3, 2, 4, 1, 5];
const uniqueArray = array.reduce((acc, current) => {
if (!acc.includes(current)) {
acc.push(current);
}
return acc;
}, []);
console.log(uniqueArray); // [1, 2, 3, 4, 5]
const array = [1, 2, 3, 2, 4, 1, 5];
const uniqueArray = [];
array.forEach(item => {
if (!uniqueArray.includes(item)) {
uniqueArray.push(item);
}
});
console.log(uniqueArray); // [1, 2, 3, 4, 5]
const array = [1, 2, 3, 2, 4, 1, 5];
const obj = {};
const uniqueArray = [];
for (let i = 0; i < array.length; i++) {
if (!obj[array[i]]) {
uniqueArray.push(array[i]);
obj[array[i]] = true;
}
}
console.log(uniqueArray); // [1, 2, 3, 4, 5]
对于大型数组: - Set 方法通常性能最好 - 对象键值法也很快 - filter 和 reduce 方法在小数组上表现良好,但在大数组上可能较慢
const array = [{id: 1}, {id: 2}, {id: 1}, {id: 3}];
const uniqueArray = array.reduce((acc, current) => {
if (!acc.some(item => item.id === current.id)) {
acc.push(current);
}
return acc;
}, []);
console.log(uniqueArray); // [{id: 1}, {id: 2}, {id: 3}]
根据你的具体需求和运行环境,选择最适合的去重方法。