美文网首页
数组去重,JS知识点(一)

数组去重,JS知识点(一)

作者: whyexist | 来源:发表于2018-01-31 00:02 被阅读0次

有的时候,想的是挺好的,但是下笔的时候经常会忘了想要写些什么。积累一些知识点,总是好的,下面让我们看一下数组的去重。

数组的去重

题目要求

[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN].uniq()

输出结果

[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a']

分析需求

题目是给Array添加方法,所以需要用到prototype。数组去重方法本身并不难,但是在JavaScript中,很多人会忽视NaN的存在,因为在JS中NaN != NaN,我们需要对它进行一下判断。具体操作如下

代码实现

Array.prototype.uniq() = function(){
  var arr = [];
  var flag = true;
  this.foreach(function(item){
    //判断是否是NaN
    if(item != item){
      flag && arr.indexOf(item) === -1 ? arr.push(item) : '';
      flag = false;
    } else{
      arr.indexOf(item) === -1 ? arr.push(item) : '';
    }
  })
  return arr;
}

ES6

ES6新增了 Set对象,也就是我们所说的“集合”,它类似于数组,但是成员的值都是唯一的,没有重复的值。所以可以方便去重。
Set本身是一个构造函数,用来生成Set数据结构。

如果用ES6为 Array 对象添加一个去除重复项的方法,则可以如下实现:

Array.prototype.uniq() = function(){
  return Array.from(new Set(this));
}

代码中用 Array.fromSet 结构转换成数组,如果你要优雅一点,可以使用 ES6 的扩展运算符。如下

Array.prototype.uniq() = function(){
  return [...new Set(this)];
}

相关文章

  • 数组去重,JS知识点(一)

    有的时候,想的是挺好的,但是下笔的时候经常会忘了想要写些什么。积累一些知识点,总是好的,下面让我们看一下数组的去重...

  • 数组的去重和数组中对象的去重

    数组中对象去重 方式1 jq方式 方式2 原生js方式 普通数组的去重 方式1 普通的数组去重js 方式2 Se...

  • js数组去重、对象数组去重

    普通数组去重 一、普通数组去重 方法一:遍历数组法 方法二:排序法 方法三:对象法 对象数组去重 方法一:将对象数...

  • js数组去重

    Set结构去重 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 向 Se...

  • JS数组去重

    方法1:两层for循环,外层循环原数组,内层循环时进行比较。 方法2:利用对象的属性不能相同的特点去重 方法3:利...

  • js数组去重

  • js数组去重

    1.利用对象的属性唯一性去重 2.利用es6的Set

  • js数组去重

  • js 数组去重

  • JS数组去重

    方法一:遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 ...

网友评论

      本文标题:数组去重,JS知识点(一)

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