Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

js 对象数组去重

作者:无畏天下   发布日期:2025-07-29   浏览:68

// 示例代码: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' } ]

解释说明:

  1. 方法一 使用了 Setfilter 方法。Set 是 ES6 引入的一种新的数据结构,它只存储唯一的值。通过 filter 方法遍历数组,并利用 Set 来检查是否已经存在相同的 id,从而实现去重。
  2. 方法二 使用了 reduce 方法。reduce 会遍历数组并将每个元素累积到一个结果中。在每次迭代时,检查当前元素的 id 是否已经在累积的结果数组中存在,如果不存在则将其添加到结果数组中。

这两种方法都可以有效地去除对象数组中的重复项。

上一篇:js 数组添加到第一个

下一篇:js 数组增加

大家都在看

js 数组对象排序

js 数组删掉第一个值

js fill

js json数组

js 数组复制

js 复制数组

js 数组拷贝

js 对象转数组

js 深拷贝数组

js 点击空白区域触发事件

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站