JavaScript数组去重的几种方法详谈

目录
  • 一、Set去重
  • 二、双重for循环去重
  • 三、利用indexOf去重
  • 四、利用icludes去重
  • 五、filter
  • 六、Map
  • 总结

一、Set去重

 function funSet(arr){
   return Array.from(new Set(arr));
 }

二、双重for循环去重

function funFor(arr){
  for(let i=0,len=arr.length;i<len;i++){
    for(let j=i+1,len=arr.length;j<len;j++){
      if(arr[i]===arr[j]){
        arr.splice(j,1);
        len--;
        j--;
      }
    }
  }
  return arr;
}

三、利用indexOf去重

function funIndex(arr){
  let newArr=[];
  for(let i=0;i<arr.length;i++){
    if(newArr.indexOf(arr[i])===-1){
      newArr.push(arr[i])
    }
  }
  return newArr;
}

四、利用icludes去重

function funInclude(arr){
  let newArr=[];
  for(let i=0;i<arr.length;i++){
    if(!newArr.includes(arr[i])){
      newArr.push(arr[i])
    }
  }
  return newArr;
}

五、filter

function funFilter(arr){
  return arr.filter(function(item,index){
    return arr.indexOf(item,0)===index;
  })
}

六、Map

function funMap(arr){
  let map=new Map();
  let newArr=[];
  for(let i=0,len=arr.length;i<len;i++){
    if(map.has(arr[i])){
      map.set(arr[i],true);
    }else{
      map.set(arr[i],false);
      newArr.push(arr[i]);
    }
  }
  return newArr;
}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • JavaScript数组去重方案

    目录 方法一:set :不是一种数据类型,是一种数据结构:成员唯一 方法二:对象属性名不能重复 方法三:indexOf 方法四:sort 方法五:includes :包含:如果数组包含那一项,返回true:不包含返回false: 方法六:hasOwnProperty : 检测属性名是否是对象的一个私有属性;返回一个布尔值: 方法七:filter+indexOf 方法八:splice 方法九:递归 方法十:Map :利用了Map数据结构存值的特点: 方法十一:reduce 方法十二:类似于方法一的

  • js将多维数组转为一维数组后去重排序

    目录 先说一下多维数组拍平 方法一: flat() 方法二: 用空字符串拼接再用split()分割一下 方法三: toString() 方法四: join() 方法五:递归调用 方法六:使用reduce 数组去重 方法一:创建一个新数组,判断新数组中是否存在该元素如果不存在则将此元素添加到新数组中 方法二:使用Set大法 方法三:使用filter() 数组排序 方法一:使用sort() 整理几个方法,怕后面忘记了又要到处翻笔记 先说一下多维数组拍平 方法一: flat() // 比如说这里有一个

  • JavaScript常用数组去重实战源码

    数组去重,一般都是在面试的时候才会碰到,一般是要求手写数组去重方法的代码.如果是被提问到,数组去重的方法有哪些?你能答出其中的10种,面试官很有可能对你刮目相看. 在真实的项目中碰到的数组去重,一般都是后台去处理,很少让前端处理数组去重.虽然日常项目用到的概率比较低,但还是需要了解一下,以防面试的时候可能回被问到. 1.利用对象的属性 使用对象属性不重名的特性. var arr = ['qiang','ming','tao','li','liang','you','qiang','tao'];

  • Javascript数组去重的几种方法详解

    目录 数组去重 1 双层for循环(类似冒泡排序的双层循环写法) 2 循环和indexof.循环和includes 3 利用对象属性不能重复去重 4 ES6 Set 5 ES6 Array. prototype.filter() 6 ES6 Array. prototype.reduce() 总结 数组去重 1 双层for循环(类似冒泡排序的双层循环写法) var arr = [2,3,4,2,34,21,1,12,3,4,1] for(var i =0;i<arr.length;i++){ /

  • JavaScript 数组去重详解

    目录 1.数组去重 2.数组去重里面的对象去重 3.根据数组某个字段相同,修改另外字段值 总结 1.数组去重 /********************************************** ╚description: ╚作者: 麒麟社 ╚时间: 2021-09-13 22:26:21 ╚名称: V1.0.5 ***********************************************/ var obj = ['麒麟','社','CC','DD','麒麟','社'

  • JS对象数组去重的3种方法示例及对比

    目录 一.去重前后数据对比 二.使用方法 1.使用filter和Map 2.使用reduce 3.使用for循环 三.2400条数据,三种方法处理时间对比 总结 一.去重前后数据对比 // 原数据是这样的 // 去重后数据是这样的 [{ [{ "goodsId": "1", "goodsId": "1", "quota": 12, "quota": 12, "skuId&quo

  • JavaScript数组去重的几种方法详谈

    目录 一.Set去重 二.双重for循环去重 三.利用indexOf去重 四.利用icludes去重 五.filter 六.Map 总结 一.Set去重 function funSet(arr){ return Array.from(new Set(arr)); } 二.双重for循环去重 function funFor(arr){ for(let i=0,len=arr.length;i<len;i++){ for(let j=i+1,len=arr.length;j<len;j++){ i

  • JavaScript数组去重的两种方法推荐

    1.数组去重: Array类型并没有提供去重复的方法,如果要把数组的重复元素干掉,那得自己想办法: 方法一:利用indexOf方法: var aa=[1,3,5,4,3,3,1,4] function arr(arr) { var result=[] for(var i=0; i<arr.length; i++){ if(result.indexOf(arr[i])==-1){ result.push(arr[i]) } } console.log(result) } arr(aa) 方法二:

  • JavaScript数组去重的五种方法

    javascript数组去重是一个比较常见的需求,解决方法也有很多种,网上都可以找到答案的,下面小编给大家整理了一份关于同类型的数组去重的方法,先给大家介绍下简单实现思路. 思路: 遍历数组,一一比较,比较到相同的就删除后面的 遍历数组,一一比较,比较到相同的,跳过前面重复的,不相同的放入新数组 任取一个数组元素放入新数组,遍历剩下的数组元素任取一个,与新数组的元素一一比较,如果有不同的,放入新数组. 遍历数组,取一个元素,作为对象的属性,判断属性是否存在 1. 删除后面重复的: functio

  • JavaScript数组去重的几种方法效率测试

    以下是我针对网上三种高效率方法总结与效率测试,如果大家有更好的意见或建议也可以提出,大家共勉学习. 数组去重法1: Array.prototype.unique1 = function(){ console.time("数组去重法1"); //记录开始执行的时间 var arr = []; //创建一个临时数组 var obj = {}; //创建一个空对象 for(var i = 0; i < this.length; i++){ //遍历当前要去重的数组 if(!obj[th

  • JavaScript数组去重的3种方法和代码实例

    数组去重的方法有很多,到底哪种是最理想的,自己不清楚.于是自己测试了下数组去重的效果和性能.测试十万个数据,代码和所耗大概时间如下. 到底采用哪种方法,根据实际情况而定吧. /*方法一: 1,'1' 会被认为是相同的; 所有hash对象,如:{x;1},{y:1}会被认为是相同的 //10ms */ Array.prototype.unique=function(){ var newArr=[],obj={}; for(var i=0,len=this.length;i<len;i++){ if

  • JavaScript数组去重的几种方法

    前言 有时候我们做项目的时候往往会需要把数组里面一些重复的项去掉,但是原生JS有排序,有筛选等等,但是就是没有数组去重怎么办呢? 这能怎么办,自己手动实现嘛. 数组不像对象和hash有唯一的标志特征(key).所以,数组去重的核心就是[1]数组内元素互相比较,然后放入新的数组中.[2]参照对象构建一个唯一的特征标志,然后放入新数组中.以下就是依照这种思路产生的方法.[3]数组中含对象的去重方式我采用使用JSON.stringify()将对象转换成JSON字符串进行比较的方式. 1.最基础的去重:

  • JavaScript中数组去重的5种方法

    正常情况下,数据去重的工作一般都是由后端同事来完成的,但是前端也要掌握好处理数据的能力,万一去重的工作交给我们大前端处理,我们也不能怂呀.现在我总结了一些去重的方法,希望对大家有点帮助. 方法一:new Set()实现数组去重 ES6 提供了新的数据结构 Set,它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构.Set函数可以接受一个数组,用于初始化.根据 Set的数据特性,我们可以实现数组去重. let list = [1, 1, '

  • JavaScript实现数组去重的7种方法

    目录 前言 方法实现 双循环去重 indexOf方法去重1 indexOf方法去重2 相邻元素去重 利用对象属性去重 set与解构赋值去重 Array.from与set去重 总结 前言 去重是开发中经常会碰到的一个热点问题,不过目前项目中碰到的情况都是后台接口使用SQL去重,简单高效,基本不会让前端处理去重. 那么前端处理去重会出现什么情况呢?假如每页显示10条不同的数据,如果数据重复比较严重,那么要显示10条数据,可能需要发送多个http请求才能够筛选出10条不同的数据,而如果在后台就去重了的

  • JS数组去重的6种方法完整实例

    本文实例讲述了JS数组去重的6种方法.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>www.jb51.net 数组去重</title> </head> <body> <script> //1.filter:(indexOf)方法创建一个新的数组,新数组中的元素是通过检查指定

随机推荐