5 种 JavaScript 数组去重方法,支持基本类型和对象数组

数组去重的方法

数组去重是 JavaScript 开发中常见的需求,不同场景下有不同的实现方式。本文总结了 5 种常用的数组去重方法,包括 Set 适用于基本类型的数据去重,以及 Map 实现的对象数组去重方案,确保数据处理高效、简洁。适合各种开发需求,提升代码质量。

使用 Set(最快最简洁)
适用场景:去重 基本数据类型(数字、字符串)。

const uniqueArray = (arr) => [...new Set(arr)];

// 示例
console.log(uniqueArray([1, 2, 2, 3, 4, 4, 5])); // [1, 2, 3, 4, 5]

使用 filter + indexOf
适用场景:适用于 简单数组,但性能比 Set 差。

const uniqueArray = (arr) => arr.filter((item, index) => arr.indexOf(item) === index);

// 示例
console.log(uniqueArray([1, 2, 2, 3, 4, 4, 5])); // [1, 2, 3, 4, 5]

使用 reduce
适用场景:当 filter 或 Set 不适用时的 替代方案。

const uniqueArray = (arr) => arr.reduce((acc, cur) => acc.includes(cur) ? acc : [...acc, cur], []);

// 示例
console.log(uniqueArray([1, 2, 2, 3, 4, 4, 5])); // [1, 2, 3, 4, 5]

适用于对象数组去重(基于 Map
适用场景:对象数组去重,避免 Set 直接去重导致数据丢失。

const uniqueArray = (arr, key) => {
  const map = new Map();
  return arr.filter(item => !map.has(item[key]) && map.set(item[key], 1));
};

// 示例
const users = [
  { id: 1, name: "Alice" },
  { id: 2, name: "Bob" },
  { id: 1, name: "Alice" }
];
console.log(uniqueArray(users, "id"));
// [{ id: 1, name: "Alice" }, { id: 2, name: "Bob" }]

ES6 Map 结合 forEach(适合复杂数组)
适用场景:适用于 大数据量去重,比 indexOf 方法性能更好。

const uniqueArray = (arr) => {
  const map = new Map();
  arr.forEach(item => map.set(item, true));
  return [...map.keys()];
};

// 示例
console.log(uniqueArray([1, 2, 2, 3, 4, 4, 5])); // [1, 2, 3, 4, 5]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值