关于Set数据结构

根据阮一峰的博客做的学习笔记。

//new Set() 是参数的数据类型不会发生改变,例如 5 和 '5'
    //新的set数据
    const data = new Set()
    let arr = [1,2,3,4,5,54,3,2]
    arr.forEach(e => {
      data.add(e) //使用 add 方法向 data 数据添加数据
    })
    console.log('arr', data);  //输出 1,2,3,4,5,54  重复的数据已经被过滤掉了

    //set 结构可以在 new 创建的时候直接接收一个数组
    const setArr = new Set([1,1,2,2,3,3,4,5,6])
    console.log('setArr',setArr);  //输出 1,2,3,4,5,6  已经完成去重的工作
    console.log('size', setArr.size);   //输出6  使用 .size 方法获取 set 里数据的数量
    setArr.delete(2)
    console.log('del',setArr)    //输出1,3,4,5,6 其中 2 已经被删除,使用 delete 删除 set 结构中的数据
    console.log('has',setArr.has(6));   //输出 true 表示 set 数据中有 6 这个成员
    setArr.clear()
    console.log('clear', setArr)   //输出一个空的 set 数据 size 为 0,clear 用于清空 set 数据的成员

    //去除字符串中的重复值
    let doubleStr = new Set('aaaabbbccc')
    console.log('str', [...doubleStr].join(''));   //注意:一定要先使用 ... 扩展一下,set 数据是没有 join 方法的会报错

    //利用 Array.from() 数组去重
    const fromArr = [1,2,3,4,1,2,3,4]
    console.log('扩展去重', [ ...new Set(fromArr) ])  //输出 [1,2,3,4]
    console.log('Array.from 去重', Array.from(new Set(fromArr)))  //输出 [1,2,3,4]

    /**
     * 关于 set 数据的遍历
     * Set.prototype.keys():返回键名的遍历器
     * Set.prototype.values():返回键值的遍历器
     * Set.prototype.entries():返回键值对的遍历器
     * Set.prototype.forEach():使用回调函数遍历每个成员
     * set 数据自带上述遍历方法
    */
    let testSet = new Set([1,2,3,4,5,5,4,2])
    testSet.forEach(item => {
      console.log('forEach', item);
    })

你可能感兴趣的:(javascriptset)