JS数组去重的方式有哪些

JavaScript 数组去重有多种方法,下面列举了一些常见的方式:

1. 使用 Set

Set 是 ES6 引入的一种数据结构,它只允许存储不重复的值。将数组转换为 Set 可以轻松去重,然后再转换回数组。

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = [...new Set(arr)];

2. 使用 filter

filter 方法可以用来创建一个新数组,其中包含满足某个条件的元素。通过检查元素的索引是否为第一次出现,可以实现去重。

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = arr.filter((value, index, self) => self.indexOf(value) === index);

3. 使用 reduce

reduce 方法可以用来迭代数组,并将元素累积到一个结果中。通过检查结果数组中是否已存在当前元素,可以实现去重。

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = arr.reduce((acc, value) => acc.includes(value) ? acc : [...acc, value], []);

4. 使用 indexOf

通过遍历数组并使用 indexOf 方法检查新数组中是否已包含当前元素,可以实现去重。

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = [];
for (let i = 0; i < arr.length; i++) {
  if (uniqueArr.indexOf(arr[i]) === -1) {
    uniqueArr.push(arr[i]);
  }
}

5. 使用 includes

类似于使用 indexOf,但使用 includes 方法可以提高代码的可读性。

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = [];
for (let i = 0; i < arr.length; i++) {
  if (!uniqueArr.includes(arr[i])) {
    uniqueArr.push(arr[i]);
  }
}

6. 使用对象或 Map

通过创建一个对象或 Map,可以利用键的唯一性来去重数组。

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = [];
const seen = {};
for (let i = 0; i < arr.length; i++) {
  if (!seen[arr[i]]) {
    seen[arr[i]] = true;
    uniqueArr.push(arr[i]);
  }
}

7. 使用 reduce 和 includes

结合 reduceincludes 方法,可以创建一个去重的新数组。

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = arr.reduce((acc, value) => acc.includes(value) ? acc : [...acc, value], []);

8. 使用 reduce 和对象

利用对象的键唯一性,结合 reduce 方法,可以实现去重。

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = arr.reduce((acc, value) => {
  if (!acc.hasOwnProperty(value)) {
    acc[value] = true;
    acc.push(value);
  }
  return acc;
}, []);

这些方法各有优缺点,选择哪种方法取决于具体的需求和场景。例如,使用 Set 是最简洁的方法,但如果需要考虑兼容性(如不支持 ES6 的环境),则可能需要选择其他方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值