首页 > 其他分享 >数组去重

数组去重

时间:2023-06-03 19:55:17浏览次数:27  
标签:map arr const log uniqueArr item 数组

数组去重是前端开发中比较常见的问题,有多种方法可以实现:

  1. 使用 Set 去重(ES6)
const arr = [1, 1, 2, 3, 4, 4, 5];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
  1. 使用 filter 去重
const arr = [1, 1, 2, 3, 4, 4, 5];
const uniqueArr = arr.filter((item, index, self) => {
  return self.indexOf(item) === index;
});
console.log(uniqueArr); // [1, 2, 3, 4, 5]
  1. 使用 reduce 去重
const arr = [1, 1, 2, 3, 4, 4, 5];
const uniqueArr = arr.reduce((prev, cur) => {
  if (!prev.includes(cur)) {
    prev.push(cur);
  }
  return prev;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
  1. 使用 map 去重
const arr = [1, 1, 2, 3, 4, 4, 5];
const map = new Map();
const uniqueArr = [];
arr.forEach((item) => {
  if (!map.has(item)) {
    map.set(item, true);
    uniqueArr.push(item);
  }
});
console.log(uniqueArr); // [1, 2, 3, 4, 5]
  1. 使用对象属性去重
const arr = [1, 1, 2, 3, 4, 4, 5];
const obj = {};
arr.forEach((item) => {
  obj[item] = true;
});
const uniqueArr = Object.keys(obj).map((item) => {
  return Number(item);
});
console.log(uniqueArr); // [1, 2, 3, 4, 5]

以上这些方法都可以实现数组去重,但是每种方法的效率和适用场景都有所不同,需要根据实际情况进行选择。

标签:map,arr,const,log,uniqueArr,item,数组
From: https://www.cnblogs.com/kitebear/p/17454458.html

相关文章

  • 一维数组名的sizeof计算大小
    intmain(){ //数组名是首元素地址 //1,sizeof(数组名)——数组名表示整个数组 //2,&数组名——表示整个数组 //除这两种情况外,都是首元素地址 // inta[]={1,2,3,4}; printf("%d\n",sizeof(a));//szieof(数组名),计算的是数组的总大小—单位字节—16 printf("%d\n",sizeof(a......
  • 6.4 二维数组
    定义一个静态的二维数组,并用2种循环语句给输出publicclassHelloWorld{publicstaticvoidmain(String[]args){intdata[][]=newint[][]{{1,2,3,4,5},{4,5,6},{7,8,9,10}};for(intx=0;x<data.length;x++)......
  • 6.5 数组与方法
    demo1publicclassHelloWorld{publicstaticvoidmain(String[]args){//对于引用数据类型而言,主要的特点是可以与方法进行引用传递//而数组本身也是引用数据类型//demo:实现一个数组的引用传递intdata[]=newint[]{1,2......
  • 6.2 数组引用传递分析
    数组是引用传递publicclassHelloWorld{publicstaticvoidmain(String[]args){//数组是引用数据类型;就一定会发生引用传递;intdata[]=newint[]{10,20,30};inttemp[]=data;temp[0]=99;//data[0]会跟着改变;......
  • 6.1 数组定义
    publicclassHelloWorld{publicstaticvoidmain(String[]args){//intdata[]={1,2,3};//静态初始化-简略格式intdata[]=newint[]{11,22,33};//静态初始化-完整格式(讲师推荐完整格式!!!)//intdata[]=newint[3];//......
  • 关于int**在malloc为二维数组分配空间时候的作用见解
    关于int**在用malloc函数为二维数组分配空间时候int**  二级指针类型二维数组的数组名为行指针,写成 arr =(char**)malloc(n*sizeof(char))时,arr并不是二维数组的数组名,而是指针数组的数组名,指针数组的数组名是二级指针,所以可以用int**把malloc分配的空间强制转换成二级指针类......
  • 对一个二维数组中的数据排序,方法如下: 将整个数组中值最小的元素所在行调整为数组第一
    /*对一个二维数组中的数据排序,方法如下:将整个数组中值最小的元素所在行调整为数组第一行,将除第一行外的行中最小元素所在行调整为第2行,将除第1,2行外的行中最小值元素所在行调整为第3行,以此类推*/   #include<stdio.h>#include<stdlib.h>#include<time.h>#defineN......
  • 超详细の树状数组讲解!
    树状数组以下有错误的话欢迎指正由于篇幅问题每道题目的代码在每一板块最后折叠给出其实线段树能维护的东西比树状数组能维护的东西多得多,但是树状数组代码好写啊!一维树状数组最为常用的树状数组,我们一般都是用这个来解决问题,二维的后面会讲。引入我们在进行数列操作的时候......
  • 树状数组详解——本质上就是空间换时间,可以解决大部分基于区间上的更新以及求和问题
     943.区间和查询-Immutable 中文 English 给一个整数数组nums,求出下标从i到j的元素和(i≤j),i跟j对应的元素也包括在内。 样例样例1输入:nums=[-2,0,3,-5,2,-1]sumRange(0,2)sumRange(2,5)sumRange(0,5)输出:1-1-3解释:sumRange(0,2)->(-2......
  • 2023-06-02:给定一个二进制数组 nums 和一个整数 k, k位翻转 就是从 nums 中选择一个长
    2023-06-02:给定一个二进制数组nums和一个整数k,k位翻转就是从nums中选择一个长度为k的子数组,同时把子数组中的每一个0都改成1,把子数组中的每一个1都改成0。返回数组中不存在0所需的最小k位翻转次数。如果不可能,则返回-1。子数组是数组的连续部分。输入:nums......