js中数组对象去重的几种方式

js数组去重的几种去重方式

在 JavaScript 中,可以使用多种方法对数组中的对象进行去重。通常情况下,需要根据对象的某个属性来判断是否重复。以下是几种常见的方法:

方法一:使用 filter 和 findIndex 方法

// 假设 arr 是包含对象的数组,每个对象有一个唯一的 id 属性
let arr = [
    { id: 1, name: 'Alice' },
    { id: 2, name: 'Bob' },
    { id: 1, name: 'Alice' }, // 重复的对象
    { id: 3, name: 'Charlie' }
];

let uniqueArray = arr.filter((obj, index, self) =>
    index === self.findIndex((t) => (
        t.id === obj.id
    ))
);

console.log(uniqueArray);

方法二:使用 Map 数据结构

let arr = [
    { id: 1, name: 'Alice' },
    { id: 2, name: 'Bob' },
    { id: 1, name: 'Alice' }, // 重复的对象
    { id: 3, name: 'Charlie' }
];

let seen = new Map();
let uniqueArray = arr.filter(obj => {
    if (!seen.has(obj.id)) {
        seen.set(obj.id, true);
        return true;
    }
    return false;
});

console.log(uniqueArray);

方法三:使用 ES6 Set 数据结构

let arr = [
    { id: 1, name: 'Alice' },
    { id: 2, name: 'Bob' },
    { id: 1, name: 'Alice' }, // 重复的对象
    { id: 3, name: 'Charlie' }
];

let ids = new Set();
let uniqueArray = arr.filter(obj => !ids.has(obj.id) ? ids.add(obj.id) : false);

console.log(uniqueArray);

附增new Set()与new MaP()的用法

  1. new Set()

    用途:
    Set 是一种集合,用于存储唯一值,即集合中的每个元素都是唯一的,不允许重复。
    特点:

不像数组,Set 中的元素没有顺序,不能通过索引访问。
可以存储任意类型的值,包括基本类型和对象引用。
可以很方便地检查值是否存在于集合中,因为它保证值的唯一性。

  1. new Map()
    用途:

Map 是一种键值对的集合,其中每个键唯一对应一个值,类似于对象,但有更灵活的键类型。
特点:

键可以是任意类型,包括基本类型、对象或者函数。
保留元素的插入顺序,可以通过键来访问对应的值。
可以通过 .set() 方法添加键值对,通过 .get() 方法获取值,通过 .delete() 方法删除键值对。

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值