obj[i]与obj.i及数组去重方法for.of+obj与set方法

发布时间 2023-04-22 12:33:48作者: 前端学一学

for of 用来遍历数组,得到的值为数组中元素的值
for in 用来遍历对象,得到的值为对象中的key,
用for in遍历,obj.key中的值是undefined,obj[key]可以得到obj中的value。

obj[]中的[]里为字符串,可以为obj添加属性,如果没有引号,则会报错。
obj.属性名,属性名只能是对象中的字符串和方法,如果属性名是数字,则要用obj[ 数字 ]来获取value

注:对象会自动把属性名的number转换为字符串
————————————————
版权声明:本文为CSDN博主「blue11l」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45780897/article/details/119415250

 

六、new Set()

ES6 新增了 Set 这一数据结构,类似于数组,但 Set 的成员具有唯一性

基于这一特性,就非常适合用来做数组去重了

function distinct(a, b) {
    return Array.from(new Set([...a, ...b]))
}

那使用 Set 又需要多久时间来处理 15W 的数据呢?

喵喵喵??? 57ms ??我没眼花吧??

然后我在两个数组长度后面分别加了一个0,在 150W 的数据量之下...

居然有如此高性能且简洁的数组去重办法?!

 

七、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
}
复制代码

当我看到这个方法的处理时长,我又傻眼了

15W 的数据居然只要 16ms ??? 比 Set() 还快???

然后我又试了试 150W 的数据量...

emmmmmmm.... 惹不起惹不起...

转载自:https://www.cnblogs.com/wisewrong/p/9642264.html