玖叶教程网

前端编程开发入门

JavaScript实现数组去重的常用方法

JavaScript 实现数组去重的方法有多种,以下是其中几种常见的方法:

利用 Set 数据结构去重:

Set 是一个可扩展的有序数据结构,可以方便地对集合进行去重。使用 Set 去重的方法是将数组转换为 Set,然后再将 Set 转换回数组。

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

利用 Array.filter() 方法去重:

Array.filter() 方法可以根据指定的条件过滤数组中的元素,并返回符合条件的元素。使用 filter() 方法去重的方法是将数组转换为 Array,然后使用 filter() 方法过滤数组中的元素,最后将过滤后的结果转换回数组。

const arr = [1, 2, 3, 4, 3, 2, 1, 2, 5, 4, 6];  
const uniqueArr = arr.filter((item) => item);  
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6]

利用 Array.indexOf() 方法去重:

Array.indexOf() 方法可以返回指定元素在数组中的索引位置,如果该元素不存在,则返回 -1。使用 indexOf() 方法去重的方法是先将数组转换为 Array,然后使用 indexOf() 方法查找数组中是否包含指定元素,最后返回指定元素的索引位置。

const arr = [1, 2, 3, 4, 3, 2, 1, 2, 5, 4, 6];  
const uniqueArr = arr.indexOf(2);  
console.log(uniqueArr); // 2

利用 Array.reduce() 方法去重:

Array.reduce() 方法可以遍历数组,对数组中的每个元素执行一定的操作。使用 reduce() 方法去重的方法是将数组转换为 Array,然后使用 reduce() 方法遍历数组,对数组中的每个元素执行一定的操作,最后返回操作后的结果。

const arr = [1, 2, 3, 4, 3, 2, 1, 2, 5, 4, 6];  
const uniqueArr = arr.reduce((accumulator, currentValue) => {  
  if (accumulator.includes(currentValue)) {  
    accumulator.push(currentValue);  
  } else {  
    accumulator.push([currentValue]);  
  }  
  return accumulator;  
}, []);  
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6]

使用 HashMap(对象)去重

const arr = [1, 2, 2, 3, 3, 4, 5];
const obj = {};
const uniqArr = arr.filter((item) => {
  return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true);
});
console.log(uniqArr); // [1, 2, 3, 4, 5]

使用 includes 方法

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

使用 forEach 方法

const arr = [1, 2, 2, 3, 3, 4, 5];
const uniqArr = [];
arr.forEach((item) => {
  if (!uniqArr.includes(item)) {
    uniqArr.push(item);
  }
});
console.log(uniqArr); // [1, 2, 3, 4, 5]

使用 ES6 中的 Map

const arr = [1, 2, 2, 3, 3, 4, 5];
const uniqArr = [];
const map = new Map();
for (let i = 0; i < arr.length; i++) {
  if (!map.has(arr[i])) {
    map.set(arr[i], true);
    uniqArr.push(arr[i]);
  }
}
console.log(uniqArr); // [1, 2, 3, 4, 5]

sort 方法实现数组去重

function unique(arr) {
    arr.sort();
    let len = arr.length;
    let result = [arr[0]];
    for (let i = 0; i < len; i++) {
        if (arr[i] !== arr[i-1]) {
            result.push(arr[i]);
        }
    }
    return result;
}

以上是 JavaScript 实现数组去重的几种常见方法,可以根据具体情况选择适合的方法。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言