首页 > 其他分享 >数组去重的5种方法

数组去重的5种方法

时间:2023-06-15 17:04:39浏览次数:46  
标签:pre val let 数组 new array 方法 empty

1·new Set 解构

let res1 = [...new Set(arAr)]

2·new Set  Array.from

let res2 = Array.from(new Set(arAr))

3·for循环 splice

 1 let fn = (array) => {
 2   for (let i = 0; i < array.length; i++) {
 3     for (let j = i + 1; j < array.length; j++) {
 4       if (array(i) === array[j]) {
 5         array.splice(j, 1)
 6       }
 7     }
 8   }
 9   return array
10 }

4·indexOf   或者 includes

let fn = (array) => {
  let empty = []
  array.forEach((val, idx) => {
    // if (empty.indexOf(val) === -1) {
    //   empty.push(val)
    // }
    if (!empty.includes(val)) {
      empty.push(val)
    }
  })
  return empty
}

5·reduce

let fn = (array) => {
  array.reduce((pre, cur) => {
    return pre.indexOf(cur) === -1 ? pre.concat(cur) : [...pre]
  }, [])
}

 6·对象的唯一性 (性能最好)

 1 let fn = (array) => {
 2   let obj = {}
 3   let arr = []
 4   for(let i of array) {
 5     if (!obj[i]) {
 6       arr.push(i)
 7       obj[i] = 1
 8     }
 9   }
10   return arr
11 }

 

标签:pre,val,let,数组,new,array,方法,empty
From: https://www.cnblogs.com/xingnizhiren/p/17483386.html

相关文章

  • C#线程同步的几种方法
    在网上也看过一些关于线程同步的文章,其实线程同步有好几种方法,下面我就简单的做一下归纳。一、volatile关键字volatile是最简单的一种同步方法,当然简单是要付出代价的。它只能在变量一级做同步,volatile的含义就是告诉处理器,不要将我放入工作内存,请直接在主存操作我。因此......
  • 常见的关键词选取方法有哪些?
    在做关键词策略的时候,选取关键词是一个很重要的环节。如何选取适合自己网站而且能够带来一定效益的关键词。常见方法如下:1、趋势推测法所谓的趋势推测法就是利用即将到来的事件进行关键词的提前策划与推测。在SEO领域,获得了先机往往能够获得不错的效益。2、长尾词法则根据二八法则,......
  • Python的map()方法如何使用?
    Python的map()方法如何使用?>>>help(map)Helponclassmapinmodulebuiltins:classmap(object)|map(func,*iterables)-->mapobject||Makeaniteratorthatcomputesthefunctionusingargumentsfrom|eachoftheiterables.Stopswhen......
  • 关于使用 z-swiper 3d流的的方法
    使用的是这个组件3D流|zebra-swiper(zebraui.com),是在uniapp中使用,本文章是为了解决一些使用这个组件时的需求来创作的。这个组件的功能是在uniapp上实现3d效果轮播图,效果可以,但是功能上差一些,需要我们自己来弥补。首先是滑动的时候会出现因为惯性效果页面上显示的已经到第4个但......
  • vue填坑之解决部分浏览器不支持pushState方法
    前端使用vue-router做单页面路由并开启history模式时,会碰到一个问题:部分低版本的手机浏览器、部分app以及IE9浏览器由于不支持pushState方法,会导致页面加载不出来。解决这个问题的思路是:当浏览器支持pushState方法时,开启history模式,不支持则开启hash模式对链接做判断,当跳转的......
  • JS 保留小数 又一方法
    对于X进行保留两位小数的处理,则可以使用Math.round(X*100)/100进行处理。 在JavaScript中,对数值进行四舍五入操作的场景还有以下几种:向上取整:ceil向下取整:floor四舍五入:round固定精度:toFixed固定长度:toPrecision取整:parseInt、位运算 ......
  • JavaScript中将字符串转换为数字的七种方法总结 乘以数字: str = '2344'; console.lo
    JavaScript中将字符串转换为数字的七种方法总结乘以数字:str='2344';console.log(str*1)//expectedresult:2344https://www.jb51.net/article/261613.htm+目录1.使用parseInt()2.使用Number()3.使用一元运算符(+)4.使用parseFloat()5.使用Math.floor()6.乘......
  • javaScript 对象与数组参考
    javaScript对象与数组参考本文列举了各种JavaScript对象与数组,同时包括对上述每一对象或数组所完成工作的简短描述,以及与其相关的属性方法,以及事件处理程序,还注明了该对象或数组的父对象用户同样可能需要参考OnlineCompanion中的超级文本ObjectHierarchy页面(http://ww......
  • 浅谈C语言指针的运用(函数与指针、数组与指针)
    1.函数与指针一个函数在编译以后会占用一定的内存,在c语言中函数一般是在栈里面,而函数名就是函数在栈中的首地址。那么接下来会讲解如何通过指针调用函数呢?用指针调用函数我们称为函数指针,指针作为一种数据类型,它指向或引用内存中的数据,那么指针同样可以用来存储函数地址(起始地址......
  • js刷新页面 方法大全
    一、先来看一个简单的例子:       下面以三个页面分别命名为frame.html、top.html、bottom.html为例来具体说明如何做。                frame.html由上(top.html)下(bottom.html)两个页面组成,代码如下:1<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0......