ECMAScript 2017 中如何进行数组去重
在前端开发中,我们经常会遇到数组去重的场景,比如为了节省流量或者避免重复渲染,需要对从接口或者用户输入中获取的数据去重。在 ECMAScript 2017 中,提供了更加简单和高效的方法来实现数组去重。本文将对这些方法进行详细介绍,并提供示例代码和指导意义。
一、使用 Set 对象去重
Set 对象是 ECMAScript 2015 引入的一种新类型,它类似于数组,但是它的成员不能重复。因此,使用 Set 对象进行数组去重,可以非常简单和高效。
具体操作如下:
1.创建一个 Set 对象:
let arr = [1, 2, 3, 3, 4]; let set = new Set(arr);
2.将 Set 对象转换成数组:
let newArr = [...set];
这样就获取到了一个去重后的新数组。
二、使用 Map 对象去重
Map 对象是一种用于存储键值对的集合,它的键和值可以是任意类型。对于数组去重,我们可以使用 Map 对象来记录每个值出现的次数,然后再从 Map 对象中获取只出现一次的值。
具体操作如下:
-- -------------------- ---- ------- -------- ----------- - --- --- - --- ------ --- ------ - --- --- ---- - - -- - - ----------- ---- - --- --- - ------- -- --------------- - ------------ --- ----------------- - ---- - ------------ ------------ - --- - - ------ ------- -
上面的代码中,我们遍历了数组中的每个值,如果 Map 对象中不存在该值,则将其添加到结果数组中,并在 Map 对象中记录该值的出现次数;如果 Map 对象中已经存在该值,则将其出现次数加 1。
最后,返回结果数组中的值即可。
三、使用 filter 和 indexOf 方法去重
filter 方法可以用于筛选数组中符合条件的元素,可以和 indexOf 方法组合使用进行去重。
具体操作如下:
function unique(arr) { return arr.filter((val, index, self) => { return self.indexOf(val) === index; }); }
上面的代码中,我们使用 filter 方法筛选数组中第一次出现的元素,使用 indexOf 方法查找元素在数组中第一次出现的位置。如果该元素不是第一次出现,则 filter 方法会将其剔除。最后,返回一个新数组,其中只包含第一次出现的元素。
总结
ECMAScript 2017 中提供了多种方法来实现数组去重,其中使用 Set 对象和 Map 对象可以更加简单和高效地进行去重。同时,我们还可以使用 filter 和 indexOf 方法来实现数组去重。
需要注意的是,使用 filter 和 indexOf 方法进行数组去重的效率相对较低,适用于小型数组,对于大型数组不建议使用。
最后,希望本文对于大家了解 ECMAScript 2017 中的数组去重方法有所帮助,也希望大家可以根据实际场景选择适合自己的去重方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64fe160a95b1f8cacdd13b5e