码迷,mamicode.com
首页 > 编程语言 > 详细

数组去重

时间:2018-06-23 14:27:55      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:asc   知识点   去重   ==   复杂度   string   script   javascrip   ===   

  const arr = [1, -1, NaN, 3, ‘a‘, 3, NaN, {name: ‘abc‘}, {name: ‘ABC‘}]
  
  // ES5
  arr.filter(function(item, index) {
    return index === arr.indexOf(item)
  })  // [1, -1, 3, "a", { name: ‘abc‘ }, { name: ‘ABC‘ }] 因为Array.prototype.indexOf(NaN) => -1
  
  // ES5
  var exists = {};
  arr.filter(function(item) {
    if (!exists[item]) {
      exists[item] = true   
      return true
    }
  }) //  [1, -1, NaN, 3, "a", { name: ‘abc‘}] 并且时间复杂度为O(n), { name: ‘abc‘ }与{ name: ‘ABC‘ }在这里重复的原因是方括号[]内会转化成字符串,Object.prototype.toString.call({name: ‘abc‘}) -> ‘[object Object]‘
  
  // ES6
  [...new Set(arr)] // [1, -1, NaN, 3, "a", { name: ‘abc‘ }, { name: ‘ABC‘ }]
  // 知识点:ES6 Set以及Symbol.iterator
  

数组去重

标签:asc   知识点   去重   ==   复杂度   string   script   javascrip   ===   

原文地址:https://www.cnblogs.com/guanine/p/9216942.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!