首页 > 编程语言 >JavaScript 数组去重

JavaScript 数组去重

时间:2023-01-25 15:33:47浏览次数:38  
标签:arr JavaScript console log uniqueArr let 数组

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

1、使用 Set 去重:Set 数据结构中不能有重复元素,可以将数组转成 Set 类型,再转回数组。

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

2、使用 Array.prototype.filter() 去重: filter() 函数可以过滤数组中不符合条件的元素,可以用来去重。

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

3、使用 for 循环和 indexOf() 去重: 遍历数组,判断当前遍历到的元素在数组中第一次出现的位置是否和当前遍历到的位置相同,如果不同说明该元素之前出现过,则舍去。

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

4、使用 Object 键值对去重:遍历数组,将数组元素当作对象的键,如果该键不存在,则将其添加到新数组中。

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

5、使用 Array.prototype.reduce() 去重: reduce() 函数可以用来构建新数组,只添加没有出现过的元素。

let arr = [1,2,3,4,5,6,2,3,4];
let uniqueArr = arr.reduce((acc, cur) => acc.includes(cur) ? acc : [...acc, cur], []);
console.log(uniqueArr);  // [1, 2, 3, 4, 5, 6]

6、使用 Map 去重: Map 数据结构中不能有重复元素,可以将数组转成 Map类型,再转回数组。

let arr = [1,2,3,4,5,6,2,3,4];
let uniqueArr = Array.from(new Map(arr.map(item => [item, item])).values());
console.log(uniqueArr);  // [1, 2, 3, 4, 5, 6]

7、使用 Array.prototype.includes() 去重: 遍历数组,判断当前遍历到的元素是否存在于新数组中,如果不存在则将其添加到新数组中。

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

8、使用 Array.prototype.sort() 去重: sort 方法可以将数组元素排序,可以将相邻的重复元素放在一起,然后遍历数组将不同的元素放入新数组中。

let arr = [1,2,3,4,5,6,2,3,4];
let uniqueArr = arr.sort().filter(function (item, index, array) {
    return !index || item !== array[index - 1];
});
console.log(uniqueArr);  // [1, 2, 3, 4, 5, 6]

9、使用第三方库 lodash 的 uniq() 去重。

10、使用第三方库 Ramda 的 uniq() 去重。

标签:arr,JavaScript,console,log,uniqueArr,let,数组
From: https://www.cnblogs.com/yuzhihui/p/17066988.html

相关文章

  • JavaScript 排序算法
    JavaScript提供了Array.prototype.sort()方法来对数组中的元素进行排序。默认情况下,sort()方法使用字典序来排序字符串。如果要按照数字大小进行排序,需要传递一个比较......
  • JavaScript 运算符&算数运算符
    一、运算符运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号。JavaScript中常用的运算符有:算数运算符递增和递减运算符比较运算符逻辑运算符赋......
  • 代码随想录 | Day6 | LC 349. 两个数组的交集、202. 快乐数
    题349.两个数组的交集解法1set去重、contains比较classSolution{publicint[]intersection(int[]nums1,int[]nums2){Set<Integer>set1=newH......
  • JavaScript学习笔记—函数的bind
    bind():函数的方法,可以用来创建一个新的函数bind可以为新函数绑定thisbind可以为新函数绑定参数functionfn(a,b,c){console.log("fn执行了~~~",this);consol......
  • JavaScript学习笔记—函数中的call和apply
    调用函数除了通过函数()这种形式外,还可以通过其他的方式来调用函数,比如可以通过调用函数的call()和apply()两个方法来调用函数函数.call()函数.apply()call和apply除......
  • JS数组的常用方法
    join()(数组转字符串)数组转字符串,方法只接收一个参数:即默认为逗号分隔符()。<script> vararr=[1,2,3,4]; console.log(arr.join());//1,2,3,4 console.log(arr.join......
  • JavaScript学习笔记—可变参数
    可变参数可以接收任意数量实参,并将他们统一存储到一个数组中返回可变参数的名字可以自己指定可变参数就是一个数组,可以直接使用数组的方法可变参数可以配合其他参数一......
  • 【奇妙的数据结构世界】 用经典例题对数组进行全面分析 | C++
    ​​​​​​第八章  数组:::hljs-center目录第八章数组●前言●一、数组是什么?1.简要介绍2.具体情况●二、数组典型例题——一维&二维&三维1.一维数组......
  • 4.2 JavaScript 执行上下文与作用域
    一、执行上下文JavaScript执行上下文是指JavaScript引擎在执行代码时的环境。它包含了代码所需的所有信息,包括变量对象、作用域链、this对象等。JavaScript引擎在执......
  • TS:菜单数组转树形,支持多级(递归)
    方法一import{menus}from'./menus.ts'functionlistToTree(list:any=[],options={},data=null){const{rootWhere,childsWhere,addChilds}=Obj......