Set

作者: 李小白呀 | 来源:发表于2021-01-19 14:54 被阅读0次

    Set

    Set 与数组类似, Set 集合中的元素不重复。

    • 查找元素: 在数组中使用 indexOf() 或 includes() 检查元素是否存在比较慢。
    • 删除元素: 在 Set 中,可以通过值删除元素。即在数组中,基于索引的splice() 功能。
    • 插入元素: 在 Set 中添加元素比在数组中通过 push()、 unshift() 或其他同类操作要快。
    • 去重: Set 对象仅能存储不同的值。
    let arr = [1,1,2,2,3,3]
    let set = [...new Set(arr)]
    let item = 3
    let itemIdx = 2
    1234
    

    查找快的原因:时间复杂度

    set.has(item)  //O(1)
    arr.indexOf(item)  // O(n)
    arr.includes(item)  // O(n)
    123
    

    删除元素不需要知道索引

    set.delete(item)
    arr.splice(itemIdx, 1)
    12
    

    插入元素

    set.add(item)
    arr.push(item)
    arr.unshift(item)
    123
    

    去重

    let arr = [1,1,2,2,3,3]
    let unq = [...new Set(arr)]
    // [1,2,3]
    123
    

    Set 常用操作方法

    方法/属性 功能介绍
    size 获取当前Set对象的长度
    add(value) 向当前Set对象中添加一个值,返回的是Set对象,所以支持链式写法
    delete(value) 删除当前Set对象中的一个值,返回一个布尔值,表示是否删除成功
    has(value) 检测这个value是否是当前Set对象的一个元素,通过返回的布尔值表示
    clear() 清除当前Set对象所有元素,没有返回值

    Set 遍历方法

    方法/属性 功能介绍
    keys() 返回该Set对象键名的遍历器,等同values()
    values() 返回该Set对象键值的遍历器,等同keys()
    entries() 返回该Set对象键值对的遍历器(目前感觉没什么用)
    forEach() 使用回调函数遍历该Set对象的每个元素

    for(let i of set.keys()){
        console.log(i);
    }
    // 0, 1, 2
    
    set.forEach((value, key, _set) => {
        console.log(value, key, _set)
    })
    12345678
    

    相关文章

      网友评论

        本文标题:Set

        本文链接:https://www.haomeiwen.com/subject/znnqzktx.html