首页 > 编程语言 > 详细

filter()数组去重的方法

时间:2020-08-10 21:40:53      阅读:798      评论:0      收藏:0      [点我收藏+]
第一种: 利用Map对象和数组的filter方法
    var arr1 = [1, 2, 3, 1, 2, 4, NaN, undefined, NaN, undefined]
    function unique(arr) {
      const res = new Map()
      return arr.filter((a) => !res.has(a) && res.set(a))
    }
    var newArr = unique(arr1)
    console.log(newArr);
结果:
技术分享图片
1.Map对象是ES6提供的一个新的数据结构,其中has的办法是返回一个布尔值,表示某个值是否存在当前的Mp对象之中,set的办法是给Map对象设置key/value。
2.filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
所以说,Map对象结合filter方法可以达到数组去重的效果~
 
filter()
array.filter(function(currentValue,index,arr), thisValue)   返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。
参数: 
  currentValue 必须。当前元素的值
  index 可选。当前元素的索引值
  arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
如果省略了 thisValue ,"this" 的值为 "undefined"
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。
 案例: done是 true 的
var array1 = [
      { "id": 0, "info": "dsfffffffffffhd", "done": false },
      { "id": 1, "info": "dsfffffffffffhd", "done": true },
      { "id": 22, "info": "dsfffffffffffhd", "done": false },
      { "id": 3, "info": "dsfffffffffffhd", "done": true },
      { "id": 42, "info": "dsfffffffffffhd", "done": false },
      { "id": 53, "info": "dsfffffffffffhd", "done": false },
      { "id": 6, "info": "dsfffffffffffhd", "done": true }
    ]

    var ar = array1.filter(function(value, index, arr) {
      return value.done === true
    })
    console.log(ar);
结果:
技术分享图片
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
数组去重的方法

filter()数组去重的方法

原文:https://www.cnblogs.com/maxiag/p/13472144.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!