ES6 学习之 数据集合

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20087231/article/details/83307143

1. set 使用

        let set = new Set(['zhangsan', 'lisi', 'wangwu', 'wangwu']);
        console.log(set); // Set(3) {"zhangsan", "lisi", "wangwu"} 去重
        console.log(set.size); // 相当于length
        // add 方法
        set.add('wen').add('an');
        console.log(set); // Set(5) {"zhangsan", "lisi", "wangwu", "wen", "an"} 支持链式调用,返回一个对象
        // delete 方法
        console.log(set.delete('an')); // true
        console.log(set); // Set(4) {"zhangsan", "lisi", "wangwu", "wen"}
        // has 方法
        console.log(set.has('an')); // false
        console.log(set.has('wen')); // true
        // clear 方法
        set.clear(); // 无返回值
        console.log(set); // Set(0) {}
        let set = new Set(['zhangsan', 'lisi', 'wangwu', 'wangwu']);
        console.log(set.keys()); // SetIterator {"zhangsan", "lisi", "wangwu"}
        console.log(set.values()); // SetIterator {"zhangsan", "lisi", "wangwu"}

2. map 使用

类似于对象,本质上是键值对的集合

键不局限于字符串,各种类型的值(包括对象)都可以作为键

对象“字符串-值”,Map“值-值”,是一种更加完善的hash结构实现

对象:

        let obj1 = {
                a: 1
            },
            obj2 = {
                b: 2
            },
            obj = {};
        obj.name = '张三';
        obj[obj1] = '天空'; // {name: "张三", [object Object]: "天空"}
        obj[obj2] = '大海'; // {name: "张三", [object Object]: "大海"} 被覆盖
        console.log(obj);

Map:

        let obj1 = {
                a: 1
            },
            obj2 = {
                b: 2
            };
        const map = new Map(
            [
                ['name', '张三'],
                ['age', 18],
                ['sex', '男'],
            ]
        );
        console.log(map); // Map(3) {"name" => "张三", "age" => 18, "sex" => "男"}

        let obj1 = {
                a: 1
            },
            obj2 = {
                b: 2
            };
        const map = new Map(
            [
                ['name', '张三'],
                ['age', 18],
                ['sex', '男'],
                [obj1, '今天天气很好'],
                [obj2, '适合写代码'],
                [
                    [1, 2], '很好'
                ]
            ]
        );
        console.log(map); // Map(6) {"name" => "张三", "age" => 18, "sex" => "男", {…} => "今天天气很好", {…} => "适合写代码", …}

 size  及去重

        let obj1 = {
                a: 1
            },
            obj2 = {
                b: 2
            };
        const map = new Map(
            [
                ['name', '张三'],
                ['age', 18],
                ['sex', '男'],
                [obj1, '今天天气很好'],
                [obj2, '适合写代码'],
                [
                    [1, 2], '很好'
                ],
                ['name', '李四'],
                ['age', 50]
            ]
        );
        console.log(map); // Map(6) {"name" => "李四", "age" => 50, "sex" => "男", {…} => "今天天气很好", {…} => "适合写代码", …}
        console.log(map.size); // 6

set方法

        let obj1 = {
                a: 1
            },
            obj2 = {
                b: 2
            };
        const map = new Map(
            [
                ['name', '张三'],
                ['age', 18],
                ['sex', '男'],
                [obj1, '今天天气很好'],
                [obj2, '适合写代码'],
                [
                    [1, 2], '很好'
                ]
            ]
        );
        // set get
        map.set('friends', ['赵柳', '李琦']).set(['dog'], '小花');
        console.log(map); // Map(8) {"name" => "张三", "age" => 18, "sex" => "男", {…} => "今天天气很好", {…} => "适合写代码", …}
        console.log(map.size); // 8
        map.set('name', 1);
        console.log(map); // Map(8) {"name" => 1, "age" => 18, "sex" => "男", {…} => "今天天气很好", {…} => "适合写代码", …}
        console.log(map.size); // 8

get 方法

扫描二维码关注公众号,回复: 3794869 查看本文章
        let obj1 = {
                a: 1
            },
            obj2 = {
                b: 2
            };
        const map = new Map(
            [
                ['name', '张三'],
                ['age', 18],
                ['sex', '男'],
                [obj1, '今天天气很好'],
                [obj2, '适合写代码'],
                [
                    [1, 2], '很好'
                ]
            ]
        );
        // set get
        console.log(map.get(obj2)); // 适合写代码

delete方法

has 方法

clear方法

keys方法

values方法

与Set的方法一致

entries方法 返回所有的key 和value

遍历

        const map = new Map(
            [
                ['name', '张三'],
                ['age', 18],
                ['sex', '男'],
                [obj1, '今天天气很好'],
                [obj2, '适合写代码'],
                [
                    [1, 2], '很好'
                ]
            ]
        );
        // 遍历
        map.forEach(function(value, index) {
            console.log(value + ': ' + index);
        })

注意事项

        let obj1 = {
                a: 1
            },
            obj2 = {
                b: 2
            };
        const map = new Map(
            [
                ['name', '张三'],
                ['age', 18],
                ['sex', '男']
            ]
        );
        // 注意事项,复杂数据类型开辟的空间都在堆区,每一个对象(包括空的)都会开辟一个新的地址
        map.set({}, '呵呵呵呵');
        map.set({}, '哈哈哈哈');
        console.log(map); // Map(5) {"name" => "张三", "age" => 18, "sex" => "男", {…} => "呵呵呵呵", {…} => "哈哈哈哈"}
        console.log({} === {}); // false

猜你喜欢

转载自blog.csdn.net/qq_20087231/article/details/83307143
今日推荐