zoukankan      html  css  js  c++  java
  • es6-10 set map 数据结构

    Set() 的用法

    {
        let list = new Set() // 声明一个 set
        // 往 set 增加元素用 add() 方法
        list.add(5)
        list.add(7)
        console.log('size', list.size) // 这里长度用 size 而不能用 length
    
        let arr = [1,2,3,4,5]
        let list2 = new Set(arr) // Set 把数组 arr 转化成一个集合了, 成为一个 Set 数据类型
        console.log('size', list2.size)
    
        // 添加一个重复的元素是不会生效的, 这个特性可以用来数组去重
        list2.add(1)
        console.log(list2) // Set(5) {1, 2, 3, 4, 5}
    }

    使用 Set() 数组去重

    PS: 不会做数据类型的转换, 也就是说 1 和 '1' 不会被去重

    {
        let arr = [1,2,3,4,1,2]
        let list = new Set(arr)
        console.log(list) // Set(4) {1, 2, 3, 4}
    
        let arr2 = [1,2,3,4,'1',2]
        let list2 = new Set(arr2)
        console.log(list2) // Set(5) {1, 2, 3, 4, "1"}
    }

    Set() 的方法 add() has() delete() clear()

    {
        let arr = ['add', 'delete', 'clear', 'has']
        let list = new Set(arr)
    
        // 使用 add() 添加一个元素
        list.add('new')
        console.log(list) // Set(5) {"add", "delete", "clear", "has", "new"}
    
        // 使用 delete() 删除一个元素
        list.delete('new')
        console.log(list) // Set(4) {"add", "delete", "clear", "has"}
    
        // 检测 set 集合中有没有指定元素
        console.log(list.has('add')) // true
    
        // 清空 set 集合
        list.clear()
        console.log(list) // Set(0) {}
    
    }

    Set 集合的遍历读取

    {
        let arr = ['add', 'delete', 'clear', 'has']
        let list = new Set(arr)
    
        // set 集合的 key 和 value 是一样的
        for (let key of list.keys()) {
            console.log(key) // add delete clear has
        }
        for (let value of list.values()) {
            console.log(value) // add delete clear has
        }
    
        list.forEach(item => {
            console.log(item) // add delete clear has
        })
    }

    WeakSet()

    1. 只能是对象, 其它数据类型都不可以
    2. 是一个弱引用, 不会检测在其它地方是否用过, 意味着不会和垃圾回收机制挂钩
    3. 没有 size 属性
    4. 没有 clear() 方法
    5. 不能遍历
    {
        let weakList = new WeakSet()
        let arg = {}
        weakList.add(arg)
        // weakList.add(2) // 报错, 因为不是对象
        console.log('weakList', weakList)
        // for (let v of weakList) {
        //     console.log(v) // 报错, 不能遍历
        // }
    }

    map()

    map 的第一种定义方式

    {
        let map = new Map()
        let arr = ['123']
    
        // map 添加元素是用 set
        map.set(arr, 456) // map 是可以用任何数据类型做 key 的
        console.log('map', map) // Map(1) {Array(1) => 456}
    
        // map 取值用 get
        console.log(map.get(arr)) // 456
    }

    map 的第二种定义方式

    接受一个数组, 数组的每一个元素还是数组, 必须是这种格式

    {
        let map = new Map([['a', 123], ['b', 456]])
        console.log(map) // Map(2) {"a" => 123, "b" => 456}
    
        // size 检查元素个数
        console.log(map.size) // 2
    
        // 删除元素
        map.delete('a')
        console.log(map) // Map(1) {"b" => 456}
    
        // 清空 clear
        map.clear()
        console.log(map) // Map(0) {}
    }

    map 的遍历和 set 用法是一样的, 不在演示

    WeakMap()

    1. 也只能接收对象, 不能是其它数据类型
    2. 没有 size 属性
    3. 也不能使用 clear()
    4. 也不能遍历
  • 相关阅读:
    映射JSP和查找JSP错误
    会话管理
    JSP九大隐式对象[续]
    Java调用DOS命令实现关机
    Filter过滤器入门1
    JSP标签
    获取当前日期和随机数
    ABSTRACT的方法是否可同时是STATIC,是否可同时是NATIVE,是否可同时是SYNCHRONIZED?
    闰年由来和闰年算法
    JSP九大隐式对象pageContext
  • 原文地址:https://www.cnblogs.com/helzeo/p/11815189.html
Copyright © 2011-2022 走看看