ES6(Set-Map数据结构)

2020-04-28  本文已影响0人  KATENGC
一、Set集合

Set集合有两种定义方法
方法一:

{
    let list = new Set();
    //Set集合要通过add添加元素
    list.add(5);
    list.add(7);

    //获取Set的长度要用size
    console.log('size', list.size);//2
}

方法二:

{
    let arr = [1, 2, 3, 4, 5];
    let list = new Set(arr);

    console.log('size', list.size);//5
}
二、Set集合的元素是唯一的
{
    let list = new Set();
    list.add(1);
    list.add(2);
    list.add(1);//不生效

    console.log('list', list);//{1, 2}

    //利用这个特性,可用于元素去重
    let arr = [1, 2, 3, 1, 2];
    let list2 = new Set(arr);

    console.log('unique', list2);//{1, 2, 3}

    //需要注意,Set不会做元素类型的转换
    let arr2 = [1, 2, 3, 1, '2'];
    let list3 = new Set(arr2);//此处Set集合中数值2 和 字符串2 不是同一个元素,不会被去重

    console.log('unique', list3);//{1, 2, 3, "2"}
}
三、Set集合add delete clear has 方法
{
    let arr = ['add', 'delete', 'clear', 'has'];
    let list = new Set(arr);

    console.log('has', list.has('add'));//true
    console.log('delete', list.delete('add'), list);//true {"delete", "clear", "has"}
    list.clear();
    console.log('clear', list);//{}
}
四、Set集合的遍历
{
    let arr = ['add', 'delete', 'clear', 'has'];
    let list = new Set(arr);
    //方法一
    for (let key of list.keys()) {
        console.log('keys', key);
    }
    //方法二
    for (let value of list.values()) {
        console.log('values', value);
    }
    //方法三 此处不加values 遍历返回的也是value,同方法二
    for (let value of list) {
        console.log('values', value);
    }
    //方法四
    for (let [key, value] of list.entries()) {
        console.log('entries', key, value);
    }

    list.forEach(item => {
        console.log(item);
    })
}
五、WeakSet 和 Set

WeakSet和Set 的区别

{
    let weakList = new WeakSet();

    let arg = {a: 1, b: 2};
    weakList.add(arg);

    // weakList.add(2);//会报错Invalid value used in weak set,因为WeakSet只能接收对象

    console.log('weakList', weakList);
}
六、Map

Map的定义方法:

{
    let map = new Map();
    let arr = ['123'];
    //Map添加元素用set
    map.set(arr, 456);

    //Map用get获取值
    console.log('map', map, map.get(arr));
}

方法二

{
    //注意结构:接收数组类型,数组里面还是数组
    let map = new Map([['a', 123], ['b', 456]]);
    console.log('map', map);

    //获取map的长度 用size
    console.log('size', map.size);
    console.log('delete', map.delete('a'), map);
    console.log('clear', map.clear(), map);

//Map的遍历同Set,此处不举例
}

另外:Map的set delete clear方法 与 Set相同;Map的遍历与 Set 相同

{
    //注意结构:接收数组类型,数组里面还是数组
    let map = new Map([['a', 123], ['b', 456]]);
    console.log('map', map);

    console.log('delete', map.delete('a'), map);
    console.log('clear', map.clear(), map);
}
七、WeakMap 和 Map

WeakMap 和 Map的区别(同WeakSet 和 Set的区别)

{
    let weakmap = new WeakMap();

    let o = {};
    weakmap.set(o, 124);
    console.log(weakmap.get(o));//124
}
上一篇下一篇

猜你喜欢

热点阅读