美文网首页
JavaScript数组去重

JavaScript数组去重

作者: 椰果粒 | 来源:发表于2019-06-27 11:23 被阅读0次

注意一点:在JavaScript中,有一个值和它自身不相等。
NaN === NaN // false
null === null // true null实际上是等于自身的

对于引用类型来说。本身[]和[]就不相等(指向的空间是独立的),所以两个相同的[]实际上是不同的,不用去。

Set对象是可以去除多余的NaN,只保留一个的。

set对象专门去重

console.log([...new Set(arr)])

扩展数组方法

Array.prototype.filterOverlap = function(){
    let temp = [];
    if(!this.length){
        return []
    }
    for(let i=0,len=this.length;i<len;i++){
        if(temp.indexOf(this[i])<0){
            temp.push(this[i])
        }
    }
    return temp;
}

reduce方法去重,去掉的是对象的key相同的

// reduce去重方法
// reduce可以设置第二个参数:prev的默认类型和初始值
let person = [
    {id: 0, name: "小明"},
    {id: 1, name: "小张"},
    {id: 2, name: "小李"},
    {id: 3, name: "小孙"},
    {id: 1, name: "小周"},
    {id: 2, name: "小陈"},   
]
let obj = {};
person = person.reduce((prev, next) => {
    obj[next.id] ? "" : obj[next.id] = true && prev.push(next)
    return prev
}, [])

去除数组中的空值(只针对基本类型)

let arr = [1,2,"", "  ", 0 , -1, null, undefined, false, true, NaN];
let tmp = arr.filter((item) => {
    if(typeof item === 'string'){
        return item.trim()
    }
    return item
})

根据对象的key值不能相同的情况去重

// 做法:先将数组转化成对象,再转化成数组
// 这种方法的缺点:将所有的数字都转化成字符串了;相同的数字和字符串去重时,只能剩下一个字符串
var arr = [1,"1", 4, 12, 6, 23, 2, 5, 2, 1, 3, 5, 26, 7]
var toObject = function (arr) {
  var obj = {}
  for (var i = 0; i < arr.length; i++) {
    obj[arr[i]] = true;
  }
  return obj;
}
var toArray = function (obj) {
  var arr = []
  for(var i in obj){
    arr.push(i)
  }
  return arr
}
var uniq = function(arr){
  return toArray(toObject(arr))
}
console.log(uniq(arr));

相关文章

  • JavaScript数组去重算法实例

    本文主要介绍了JavaScript数组去重算法,结合实例形式总结分析了JavaScript数组去重相关的读写、遍历...

  • javascript数组去重,数组对象去重

    利用Reduce去重 function unique(arr) {var obj = {};arr = arr.r...

  • JavaScript - 数组去重

    数组去重 1.for循环 2.0 少了多少行代码~~~ 3.0 indexOf 4.0 map/forEach E...

  • javascript 数组去重

    es6数组去重的方法

  • JavaScript 数组去重

    数组去重,一般都是在面试的时候才会碰到,一般是要求手写数组去重方法的代码。如果是被提问到,数组去重的方法有哪些?你...

  • JavaScript 数组去重

    博客地址:https://ainyi.com/#/32 单数组去重 filter + indexOf() filt...

  • JavaScript数组去重

    数组去重是一个js中在面试中经常被问到的问题,被问到是因为确实能够考察一些问题。如果不使用第三方的工具库,完全使用...

  • Javascript 数组去重

    数组去重 数组去重,一般需求是给你一个数组,调用去重方法,返回数值副本,副本中没有重复元素。一般来说,两个元素通过...

  • 【JavaScript】数组去重

    话说面试常会碰到面试官会问JavaScript实现数组去重的问题,最近刚好在学习有关于JavaScript数组相关...

  • JavaScript数组去重

    当前元素的下标,和从数组里找到该元素的下标一样时,说明是第一次出现 ES6 Set类似于数组,成员值唯一,经过过滤...

网友评论

      本文标题:JavaScript数组去重

      本文链接:https://www.haomeiwen.com/subject/ciduqctx.html