// 示例代码:js 对象数组去重
// 假设我们有一个对象数组,每个对象都有一个唯一的 id 属性
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' }, // 重复项
{ id: 3, name: 'Charlie' }
];
// 方法一:使用 Set 和 map
function uniqueArray(arr, key) {
const seen = new Set();
return arr.filter(item => {
const k = item[key];
return seen.has(k) ? false : seen.add(k);
});
}
// 调用函数并传入需要去重的键名
const uniqueArr = uniqueArray(arr, 'id');
console.log(uniqueArr);
// 输出: [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' } ]
// 方法二:使用 reduce
function uniqueArrayReduce(arr, key) {
return arr.reduce((accumulator, current) => {
const x = accumulator.find(item => item[key] === current[key]);
if (!x) {
return accumulator.concat([current]);
} else {
return accumulator;
}
}, []);
}
// 调用函数并传入需要去重的键名
const uniqueArrReduce = uniqueArrayReduce(arr, 'id');
console.log(uniqueArrReduce);
// 输出: [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' } ]
Set
和 filter
方法。Set
是 ES6 引入的一种新的数据结构,它只存储唯一的值。通过 filter
方法遍历数组,并利用 Set
来检查是否已经存在相同的 id
,从而实现去重。reduce
方法。reduce
会遍历数组并将每个元素累积到一个结果中。在每次迭代时,检查当前元素的 id
是否已经在累积的结果数组中存在,如果不存在则将其添加到结果数组中。这两种方法都可以有效地去除对象数组中的重复项。
上一篇:js 数组添加到第一个
下一篇:js 数组增加
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站