资讯专栏INFORMATION COLUMN

js基本操作-数组去重

GeekGhc / 1275人阅读

摘要:基本操作数组去重数组去重的方法临时数组保存其实这里面还没考虑到数组里面嵌套数组对象的情况把去重后的结果放在一个临时数组中对原来数组的元素与临时数组元素比较临时数组中不存在这个元素的放入临时数组。

js基本操作-数组去重 数组去重的方法 1. 临时数组保存(其实这里面还没考虑到数组里面嵌套数组/对象的情况)

把去重后的结果放在一个临时数组中, 对原来数组的元素与临时数组元素比较, 临时数组中不存在这个元素的, 放入临时数组。

function unique (arr) {
    if (!Array.isArray(arr)) return arr;
    var result = [];
    arr.map(function (item) {
        if (result.indexOf(item) == -1) {
            result.push(item);
        }
    })
    return result;
}
2. 利用对象去重(当数组的键为 11, "11"时, 会保留第一个出现的值)

创建一个新的数组存放结果, 和一个空的对象。for循环时, 每次取出一个元素与对象进行对比, 如果这个元素不重复, 则把它存放到结果数组中, 同时把这个元素的内容作为一个对象的属性, 并赋值, 存入对象中。

function unique (arr) {
    if (!Array.isArray(arr)) return arr;
    var result = [];
    var obj = {}
    arr.map(function (item) { 
        if (!obj[item]) {
            result.push(item);
            obj[item] = 1
        };
    }) 
    return result;
}
3. 先排序, 后去重

先把数组排序, 然后比较相邻的两个值。排序的时候用原生的 sort 方法, JS引擎内部使用的是快速排序。

function unique(arr) {
    if (!Array.isArray(arr)) return arr;
    if (arr.length < 2) return arr;
    arr.sort(); // sort在元数组进行排序, 不生成副本
    var result = [arr[0]]
    arr.map(function (item, index, arr) {
        if (index > 0) {
            if (item !== arr[index - 1]) {
                result.push(item);
            }
        }
    })

    return result;
}
var arr = [99, 88, 22, 22, 44, 88, 99, "99"]
console.log(unique(arr));
4. 利用 ES6 的 Set 对象 和 Array.from 方法

Set对象: 它是ES6新增的有序列表集合, 不会包含重复项。

Array.from()方法: 将一个类数组或可遍历对象转换成真正的数组。

function unique (arr) {  
    if (!Array.isArray(arr)) return arr;
    if (arr.length < 2) return arr;
    return Array.from(new Set(arr))
}
var arr = [99, 88, 22, 22, 44, 88, 99, "99"]
console.log(unique(arr));
5.利用 filter 和 Map 对象
function unique(arr) {
    if (!Array.isArray(arr)) return arr;
    if (arr.length < 2) return arr;
    return arr.filter(function(item, index, arr) {
        if (arr.indexOf(item) === index) {
            return true;
        }
    });
}
var arr = [99, 88, 22, 22, 44, 88, 99, "99"]
console.log(unique(arr));

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

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

相关文章

  • js基本操作-数组去重

    摘要:基本操作数组去重写在前面数组去重经常出现在前端招聘的笔试题里,比如有数组,请用实现去重函数,使得返回作为笔试题,考点有二正确。基本介绍文章主要是对数组去重的常用方法进行介绍。 js基本操作-数组去重 写在前面 JavaScript 数组去重经常出现在前端招聘的笔试题里,比如: 有数组 var arr = [a, b, c, 1, 0, c, 1, , 1, 0],请用 JavaScr...

    blastz 评论0 收藏0
  • JS数组去重方法小结

    摘要:数组去重看了网上很多数组去重方法,用的比较常见的大概就几种,今天想自己来做一个总结。还有就是方法返回的数组也是排序后的数组,某些情况下可能不符合要求。 JS数组去重 看了网上很多数组去重方法,用的比较常见的大概就几种,今天想自己来做一个总结。部分内容参考该博客 1 . 在原数组上操作(基本方法) 思路:利用循环嵌套,判断数组中每个元素与其后面的元素是否相等,如果相等,就使用spli...

    PascalXie 评论0 收藏0
  • js扩展运算符,神奇的3个点点,数组去重、合并数组等等

    最近lz一周排了9个面试,面试经常被问到一些数组的问题,比如说es6里面一些数组去重、合并数组,之前压根就没了解过,后来才知道考的都是es6的知识,今天好好挖掘一下,发现一个神奇的点点三姐妹 我们来看看经常使用的方法 1、数组去重 之前的想法可能要遍历数组去重,但是现在又es6的骚操作 var a = [1,1,2,3] Array.from(new Set()) // 利用es6...

    waltr 评论0 收藏0
  • JavaScript 实现数组更多的高阶函数

    摘要:实现数组更多的高阶函数吾辈的博客原文场景虽说人人平等,但有些人更加平等。若是有一篇适合萌新阅读的自己实现数组更多操作的文章,情况或许会发生一些变化。类似于的初始值,但它是一个函数,避免初始值在所有分组中进行累加。 JavaScript 实现数组更多的高阶函数 吾辈的博客原文: https://blog.rxliuli.com/p/fc... 场景 虽说人人平等,但有些人更加平等。 为...

    aervon 评论0 收藏0
  • js数组去重

    数组去重的方式有很多种,现总结一些备以后查漏补缺来用。 对基本数组类型去重: (1)set 和 array.from()实现 var str, strs = [a, b, c, er, d, er, a, b, c]; function removeRepeat(arr) { return Array.from(new Set(arr)) } console.log(remove...

    cartoon 评论0 收藏0

发表评论

0条评论

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