在JavaScript或jQuery中删除数组中的所有重复值,可以通过多种方法实现。以下是一些常见的方法:
Set
是ES6中引入的一个新的数据结构,它类似于数组,但是成员的值都是唯一的,没有重复的值。
let arr = [1, 2, 2, 3, 4, 4, 5];
let uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // 输出: [1, 2, 3, 4, 5]
filter()
方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
let arr = [1, 2, 2, 3, 4, 4, 5];
let uniqueArr = arr.filter((item, index) => {
return arr.indexOf(item) === index;
});
console.log(uniqueArr); // 输出: [1, 2, 3, 4, 5]
reduce()
方法对数组中的每个元素执行一个 reducer 函数(升序执行),将其结果汇总为单个返回值。
let arr = [1, 2, 2, 3, 4, 4, 5];
let uniqueArr = arr.reduce((accumulator, currentValue) => {
if (!accumulator.includes(currentValue)) {
accumulator.push(currentValue);
}
return accumulator;
}, []);
console.log(uniqueArr); // 输出: [1, 2, 3, 4, 5]
Set
和 indexOf
方法可能无法正确识别重复项。这时可以考虑使用 Map
对象来存储已经遍历过的元素。let arr = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Alice'}];
let uniqueArr = arr.reduce((accumulator, currentValue) => {
if (!accumulator.some((item) => item.id === currentValue.id)) {
accumulator.push(currentValue);
}
return accumulator;
}, []);
console.log(uniqueArr); // 输出: [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}]
以上方法都是在客户端JavaScript环境中实现的。如果你的应用是基于服务器端的,例如使用Node.js,那么也可以使用类似的方法来处理数组中的重复值。
参考链接:
领取专属 10元无门槛券
手把手带您无忧上云