资讯专栏INFORMATION COLUMN

数组中元素去重

e10101 / 2576人阅读

摘要:目前有以下几种方法可以实现数组中元素去重遍历数组一个一个进行比较利用实现,在扩展运算符提供了新的数据结构。它类似于数组,但是成员的值都是唯一的,没有重复的值。

目前有以下几种方法可以实现数组arr中元素去重
let arr = [1, 2, 3, 4, 2, 3, 4]

遍历数组一个一个进行比较

 let arr = [1, 2, 3, 4, 2, 3, 4];
    let newarr = [];
    for(let i of arr){
        if(newarr&&newarr.length == 0){
             newarr.push(i);
        }
        let index = newarr.findIndex((value, index, arr)=>{
             return i===value
         });
         if(index < 0){
             newarr.push(i);
         }
    }
    console.log( newarr);// [1, 2, 3, 4]
    

利用obj实现,在http://www.cnblogs.com/mmzuo-...

     var array = [1, "1", 1, 2, 3, 2, 4];
     var tmpObj = {};
     var result = [];
     array.forEach(function(a) {
       var key = (typeof a) + a;
       if (!tmpObj[key]) {
         tmpObj[key] = true;
         result.push(a);
       }
     });
     console.log(result);

扩展运算符(...) + set
ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构。向 Set 加入值的时候,不会发生类型转换,所以5和"5"是两个不同的值。Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”,它类似于精确相等运算符(===),主要的区别是NaN等于自身,而精确相等运算符认为NaN不等于自身。

 let newArr = [...new Set(arr)]
 console.log(newArr);//[1, 2, 3, 4]

Array.from() + set
Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)

 let newArr = Array.from(new Set(arr))
  console.log(newArr);//[1, 2, 3, 4]

还有很多中未写在上面,大家可以去
https://github.com/fung-yu/js...
上查看

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97710.html

相关文章

  • 也谈面试必备问题之 JavaScript 数组去重

    摘要:而数组元素去重是基于运算符的。而如果有迭代函数,则计算传入迭代函数后的值,对值去重,调用方法,而该方法的核心就是调用方法,和我们上面说的方法一异曲同工。 Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中。 阅读一些著名框架类库的源码,就好像...

    Coly 评论0 收藏0
  • 8种常用数组去重方法

    摘要:种常用数组去重第一种两个循环思路新建一个为空的结果数组外层遍历原数组,内层循环遍历返回数组判断内层循环数组当前元素和外层数组元素的值是否相等,是退出内层循环经过第二部后,此时内层循环数组的索引值和返回数组的长度正好相等,外层数组元素也是唯一 8 种常用数组去重 第一种 【两个 for 循环】 思路: 新建一个为空的结果数组 外层 for 遍历原数组,内层循环遍历返回数组 判断内层循环...

    vibiu 评论0 收藏0
  • JS数组去重总结

    摘要:数组去重,一般会在面试的时候才会碰到,要求手写数组去重方法的代码。在实际项目中碰到的数组去重,一般都是后台去处理,很少让前端处理数组去重。数组去重的方法一利用去重中最常用如果不考虑兼容性,这种去重的方法代码最少。 数组去重,一般会在面试的时候才会碰到,要求手写数组去重方法的代码。如果是被提问到,数组去重的方法有哪些?你能答出其中的10种,面试官很有可能对你刮目相看。 在实际项目中碰到的...

    whinc 评论0 收藏0
  • JS专题之数组去重

    摘要:将元素作为对象的键,默认键对应的值为如果对象中没有这个键,则将这个元素放入结果数组中去。 前言 数组去重在日常开发中的使用频率还是较高的,也是网上随便一抓一大把的话题,所以,我写这篇文章目的在于归纳和总结,既然很多人都在提的数组去重,自己到底了解多少呢。又或者是如果自己在开发中遇到了去重的需求,自己能想到更好的解决方案吗。 这次我们来理一理怎么做数组去重才能做得最合适,既要考虑兼容性,...

    only_do 评论0 收藏0
  • javascript数组去重

    摘要:数组去重双层循环使用双层嵌套循环是最原始的方法用来存储结果如果是唯一的,那么执行完循环,等于外层循环内层循环当和相等时,跳出循环。否则说明元素唯一,这时成立,将此元素添加到中。它类似于数组,但是成员的值都是唯一的,没有重复的值。 JavaScript数组去重 双层循环 使用双层嵌套循环是最原始的方法: var array = [a,b,a]; function unique(arra...

    qylost 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<