首页 > 其他分享 >数组去重的几种方式

数组去重的几种方式

时间:2022-09-04 23:00:51浏览次数:68  
标签:arr return 方式 几种 item let result 数组 unique

1、利用 Map 数据结构去重

1 let arr = [1,2,3,4,3,2,3,4,6,7,6];
2      let unique = (arr)=> {
3         let seen = new Map();
4          return arr.filter((item) => {
5             return !seen.has(item) && seen.set(item,1); 
6         });
7      };
8  unique(arr);                                       

2、利用 for 嵌套 for,然后 splice 去重

 1 functionunique(arr){
 2     for(vari=0; i<arr.length; i++){
 3         for(var j=i+1; j<arr.length; j++){
 4             if(arr[i]==arr[j]) {
 5 //第一个等同于第二个,splice 方法删除第二个
 6     arr.splice(j,1); j--;
 7              }
 8         }
 9     }
10     return arr;
11  }
12                         

3、for 双重循环 通过判断第二层循环,去重的数组中是否含有该元素,如果有就退出第二 层 循环,如果没有j==result.length 就相等,然后把对应的元素添加到最后的数组里面。

 1 let arr = [1,2,3,4,3,2,3,4,6,7,6];
 2 let result = [];
 3   for(var i = 0 ; i < arr.length; i++) {
 4       for(var j = 0 ; j < result.length ; j++) {
 5                if(arr[i] === result[j]){
 6      break;
 7 
 8      };
 9  };
10         if(j == result.length){
11 result.push(arr[i]);  
12 };
13 };
14     console.log(result);   

4、利用 filter

let arr = [1,2,3,4,3,2,3,4,6,7,6]; 
    let unique = (arr) => {
        return arr.filter((item,index) => {
    return arr.indexOf(item) === index; })
}; 
    unique(arr);

 

标签:arr,return,方式,几种,item,let,result,数组,unique
From: https://www.cnblogs.com/meirongliu/p/16656395.html

相关文章

  • java复制文件的4种方式及拷贝文件到另一个目录下的实例代码
    java复制文件的4种方式及拷贝文件到另一个目录下的实例代码这篇文章主要介绍了java复制文件的4种方式,通过实例带给大家介绍了java拷贝文件到另一个目录下的方法,需要的......
  • 终止 Array.prototype.forEach 方法运行的方式
    通常情况下,Array.prototype上的遍历方法forEach、map、filter、...被调用以后会完整的遍历每一个数组项,并执行内部代码指令,无法被中途终止。但是可以通过 throw语句......
  • Mybatis学习笔记(三)——Mybatis执行sql的两种方式
    这部分内容前边简单提过了,之前写第一个Mybatis示例时用的就是第一种方式。本节主要介绍MyBatis执行SQL语句的两种方式和它们的区别。MyBatis有两种执行SQL语句的方......
  • 浅谈 SAP ABAP 系统里的 ALV 输出方式实现
    由于国情原因,ABAPALV相关的报表开发在国内众多SAP技术交流群里永远都是一个热门话题。最近Jerry和朋友的技术交流群里,郭爷向大家介绍了ALVIntegratedDataAccess,能够轻......
  • 数组初始化
    memset(a,false,sizeof(a));//将bool型a数组初始化为false0x3f3f3f3f//INT_MAX的一半memset(a,0x3f3f3f3f,sizeof(a));//将a数组初始化为0x3f3f3f3fmemset(a,0,sizeo......
  • 请求参数中文乱码-解决方式
    POST:    调用setCharacterEncoding()这样就解决POST乱码问题 GET:  优化:   ......
  • 动态数组
    动态数组1.vector1.1vector说明vector是向量类型,可以容纳许多类型的数据,因此也被称为容器(可以理解为动态数组,是封装好了的类)进行vector操作前应添加头文件......
  • 一维数组
    一#include<bits/stdc++.h>usingnamespacestd;intmain(){ inta[3]; cin>>a[0]; cin>>a[1]; cin>>a[2]; cout<<a[0]<<endl; cout<<a[1]<<endl;......
  • 二维数组
    (一)a[0]a[1]a[2]a[3]a[4]a[0][1]a[1][1]a[2][1]a[3][1]a[4][1]a[0][2]a[1][2]a[2][2]a[3][2]a[4][2]a[0][3]a[1][3]a[2][3]a[3][3]a[4][3]......
  • 算法提高课 第四章 数据结构之树状数组
    一、介绍功能快速求前缀和O(logn)修改某一个数O(logn)原理c[x]:以x结尾的长度lowbit(x)的所有数的和父节点找所有子节点(求和操作):c[x]=a[x]+c[x-1]+.........