// 示例代码: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 set 转数组
下一篇:js 数组增加
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站