微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

es6去重

 

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

Set本身是一个构造函数,用来生成Set数据结构。#####去除数组重复元素 [...new Set(array)] Array.from(new Set(array));

eg:
/** es6数组去重 */
uniqueArr(arr) {
    var x = new Set(arr);
    return [...x];
},

#####非es6去重1、时间复杂度o(n)
function fn(arr) {
    let obj = {};
    arr.forEach((item) = >{
        obj[item] = ''; //只保存最后出现的键为准,从而去重
    }) return Object.keys(obj)
}
2、时间复杂度o(n * n) function fn(arr) {
    return arr.filter((item, index, arr) = >arr.indexOf(item) === index) //第一次出现的的元素下标才等于下标
}
/** 数组去重*/

七、
for...of + Object[最佳]

这个方法我只在一些文章里见过,实际工作中倒没怎么用

首先创建一个空对象,然后用
for循环遍历

利用对象的属性不会重复这一特性,校验数组元素是否重复

function distinct(a, b) {
    let arr = a.concat(b) let result = [] let obj = {}

    for (let i of arr) {
        if (!obj[i]) {
            result.push(i) obj[i] = 1
        }
    }

    return result
}该方法的不足之处在于无法对NaN进行过滤,原因是
var a = [1, NaN, 2];
a.indexOf(NaN) === -1;,改善的方法是使用includes方法

function arr_unique4(arr) {
    var res = [];
    arr.forEach((val) = >{
        if (!res.includes(val)) {
            res.push(val);
        }
    });
    return res;
}
arr_unique4(arr);
//(13) [1, "true", true, 15, false, undefined, null, NaN, "NaN", 0, "a", {…}, {…}]

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐