es6 去重(数组)

摘要:数组去重是指当数组中出现重复的元素时,通过一定的算法达到去掉重复元素的目的。一般都是在面试的时候才会碰到,要求手写数组去重方法的代码。在真实的项目中碰到的数组去重

数组去重是指当数组中出现重复的元素时,通过一定的算法达到去掉重复元素的目的。一般都是在面试的时候才会碰到,要求手写数组去重方法的代码。
在真实的项目中碰到的数组去重,一般都是后台去处理,很少让前端处理数组去重。这篇文章主要介绍2种es6 数组去重的实现,更多的去重方案请点击查看:JS数组去重的九种高阶方法(亲测有效)


方法一:

function unique(arr) {
    const res = new Map();
    return arr.filter((a) => !res.has(a) && res.set(a, 1))
}

就这么短,就可以了,我们来解释一下为什么。

Map对象

Map是ES6 提供的新的数据结构。
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。

下表列出了 Map 对象的方法。

方法描述
clear删除所有的键/值对,没有返回值。
delete删除某个键,返回true。如果删除失败,返回false。
forEach对每个元素执行指定操作。
get返回Map对象key相对应的value值。
has返回一个布尔值,表示某个键是否在当前 Map 对象之中。
set给Map对象设置key/value 键/值对。

Map对象还有一个size属性,他返回Map对象的键/值对的数量。


方法二:

function unique(arr) {
    return Array.from(new Set(arr))
}

这个方法的代码量更少,简直不可思议。
数组的 from方法

Array.from() 方法从一个类似数组或可迭代的对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等) 中创建一个新的数组实例

语法:

Array.from(arrayLike[, mapFn[, thisArg]])
参数描述
arrayLike必需,想要转换成真实数组的类数组对象或可迭代的对象。
mapFn可选,如果指定了该参数,则最后生成的数组会经过该函数的加工处理后再返回。
thisArg可选,执行 mapFn 函数时 this 的值。

示例代码:

const bar = ["a", "b", "c"];
Array.from(bar);
// ["a", "b", "c"]

Array.from('foo');
// ["f", "o", "o"]

Set对象

Set 对象允许你存储任何类型的 唯一值 ,无论是原始值或者是对象引用。
Set对象是值的集合,你可以按照插入的顺序迭代它的元素。
Set中的元素只会出现一次,即 Set 中的元素是唯一的。


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_11817