// 示例代码:js 数组对象去重
// 假设我们有一个包含重复对象的数组
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' }, // 重复项
{ id: 3, name: 'Charlie' }
];
// 方法一:使用 Set 和 map 来去重(基于某个唯一键,如 id)
function uniqueBy(arr, key) {
const seen = new Set();
return arr.filter(item => {
const value = item[key];
return seen.has(value) ? false : seen.add(value);
});
}
const uniqueArr = uniqueBy(arr, 'id');
console.log(uniqueArr);
// 输出: [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }]
// 方法二:使用 reduce 和 findIndex 来去重(基于整个对象的比较)
function uniqueObjects(arr) {
return arr.reduce((acc, current) => {
const x = acc.find(item => JSON.stringify(item) === JSON.stringify(current));
if (!x) {
return acc.concat([current]);
} else {
return acc;
}
}, []);
}
const uniqueArr2 = uniqueObjects(arr);
console.log(uniqueArr2);
// 输出: [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }]
方法一:
Set 来存储已经遇到的键值(例如 id),并通过 filter 方法过滤掉重复的对象。id)来判断对象是否重复。方法二:
reduce 方法遍历数组,并通过 find 方法检查当前对象是否已经在结果数组中存在。上一篇:js 对象数组去重
下一篇:js 数组转对象
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站