推荐新闻
数组去重的六种常用方式
发布者:深蓝互联
发布时间:2024-09-18
点击:
以下是数组去重的六种常用方式:
一、使用 ES6 的 Set 数据结构
const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = Array.from(new Set(arr));
console.log(uniqueArr); // [1, 2, 3, 4, 5]

Set 数据结构不允许有重复的值,通过将数组转换为 Set 再转换回数组,可以快速去除重复项。
二、利用对象属性去重
const arr = [1, 2, 2, 3, 4, 4, 5];
const obj = {};
const uniqueArr = [];
for (let i = 0; i < arr.length; i++) {
  if (!obj[arr[i]]) {
    obj[arr[i]] = true;
    uniqueArr.push(arr[i]);
  }
}
console.log(uniqueArr); // [1, 2, 3, 4, 5]

遍历数组,将数组元素作为对象的属性,如果该属性不存在,则将元素添加到新数组中,并在对象中标记该属性为已存在。
三、双层循环去重
const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = [];
for (let i = 0; i < arr.length; i++) {
  let isDuplicate = false;
  for (let j = 0; j < uniqueArr.length; j++) {
    if (arr[i] === uniqueArr[j]) {
      isDuplicate = true;
      break;
    }
  }
  if (!isDuplicate) {
    uniqueArr.push(arr[i]);
  }
}
console.log(uniqueArr); // [1, 2, 3, 4, 5]

外层循环遍历原数组,内层循环遍历去重后的新数组,检查当前元素是否已经在新数组中,如果不在则添加到新数组中。
四、排序后相邻比较去重
const arr = [1, 2, 2, 3, 4, 4, 5];
const sortedArr = arr.sort((a, b) => a - b);
const uniqueArr = [sortedArr[0]];
for (let i = 1; i < sortedArr.length; i++) {
  if (sortedArr[i]!== sortedArr[i - 1]) {
    uniqueArr.push(sortedArr[i]);
  }
}
console.log(uniqueArr); // [1, 2, 3, 4, 5]

先对数组进行排序,然后遍历排序后的数组,比较相邻元素是否相同,不同则添加到新数组中。
五、使用 filter 方法去重
const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = arr.filter((value, index, self) => {
  return self.indexOf(value) === index;
});
console.log(uniqueArr); // [1, 2, 3, 4, 5]

filter 方法遍历数组,对于每个元素,检查它在原数组中的第一次出现的索引是否等于当前索引,如果是则说明该元素是唯一的,将其添加到新数组中。
六、使用 reduce 方法去重
const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = arr.reduce((acc, cur) => {
  if (!acc.includes(cur)) {
    acc.push(cur);
  }
  return acc;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4, 5]

reduce 方法遍历数组,对于每个元素,检查新数组中是否已经包含该元素,如果不包含则添加到新数组中。

 

文章来自深蓝互联http://www.szdbi.com/WEBkaifajishu/547.html转载请注明出处!

关注深蓝互联公众号
Copyright © 2013-2024 深蓝互联 版权所有
友情链接: