zoukankan      html  css  js  c++  java
  • ES6数据解构:set map 的介绍

    set:类似于数组,但它的一大特性就是所有元素都是唯一的,没有重复。我们可以利用这一唯一特性进行数组的去重工作。

      单一数组的去重:

        let set = new Set([1, 2, 2, 3, 4, 3, 5])
        console.log(set) //Set(5) {1, 2, 3, 4, 5}
        console.log(set.size)//5  set没有length属性 要用size属性

      多数组的合并去重:不会进行数据类型的转换

        let arr1 = [1, 2, 3, 4, '5']
        let arr2 = [2, 3, 4, 5, 6]
        let set7 = new Set([...arr1, ...arr2])
        console.log(set7) //Set(6) {1, 2, 3, 4, '5', 5, 6}

      向set中添加元素:

        let set1 = new Set()
        set1.add(1)
        set1.add(2)
        set1.add(3)
        console.log('added:', set1)//Set(3) {1, 2, 3}

      set中删除元素:

        let set1 = new Set([1,2,3,4,5])
        set1.delete(1)
        console.log('deleted:', set1)//Set(4) {2, 3, 4, 5}

      set中清除所有元素:

        let set1 = new Set([1,2,3,4,5])
        set1.clear()
        console.log(set1)//Set(0) {}

      set中判断某元素是否存在:

        let set = new Set([1,2,3,4,5])
        console.log( set.has(1))//true
        console.log( set.has(8))//false

      遍历set:

        let arr=['add','delete','clear','has'];
        let list=new Set(arr);
        let str = str1 = '0';
        for(let key of list){
            str += key + ' ';
        }
        console.log(str)//add delete clear has
        list.forEach(function(item){
            str1 += item + ' ';
        })
        console.log(str1)//add delete clear has

      Set和Array互转:

        let arr = [1,2,3,4,5];
        //数组转set
        let set = new Set(arr)
        console.log(set)//Set(5) {1, 2, 3, 4, 5}
        //set转数组有两种方案:
        console.log([...set])
        console.log( Array.from(set))

    map特性:

      1.键值对,键可以是任何数据类型包括对象。

        let map = new Map()
        let objkey = {p1: 'v1'}
        map.set(objkey, 'hello')//添加
        console.log(map)//Map(1) { {p1: "v1"} => "hello" }
        console.log(map.get(objkey))//hello

      2.Map可以接受数组作为参数,数组成员还是一个数组,其中有两个元素,一个表示键一个表示值。

        let map = new Map([
            ['name', 'Aissen'],
            ['age', 12]
        ])
        console.log(map);//Map(2) {"name" => "Aissen", "age" => 12}

      map的属性和方法:

        let map = new Map([
            ['name','小明'],
            ['age',16],
            ['hobby','打游戏']
        ])
        console.log(map) //Map(3) {"name" => "小明", "age" => 16, "hobby" => "打游戏"}
        console.log(map.size)// 3 获取map的长度 用size map没有length属性
        console.log(map.get('hobby'))//打游戏
        //判断是否存在指定的键
        console.log(map.has('hobby')) // true
        console.log(map.has('hello')) // false
        //添加 修改
        map.set('sex','男')
        console.log(map) // Map(4) {"name" => "小明", "age" => 16, "hobby" => "打游戏", "sex" => "男"}
        //删除
        map.delete('hobby')
        console.log(map)//Map(3) {"name" => "小明", "age" => 16, "sex" => "男"}
        //清空所有数据
        map.clear()
        console.log(map) //Map(0) {}

      遍历map:

        let map = new Map([
            ['name','小明'],
            ['age',16],
            ['hobby','打游戏']
        ])
        for(let key of map.keys()){
            console.log(key) //各遍历出map的键名 name age hobby
        }
        for(let value of map.values()){
            console.log(value) //各遍历出map的键值 小明 16 打游戏
        }
        for(let [key,value] of map.entries()){
            console.log(key,value)//各遍历出map的键值对 name 小明 | age 16 | hobby 打游戏
        }

      map和其他数据类型互转:

      和数组的互转:

        let map = new Map([
            ['name','小明'],
            ['age',16],
            ['hobby','打游戏']
        ])
        let arr = [...map];
        console.log(arr)//转成二维数组 [ ["name", "小明"], ["age", 16],  ["hobby", "打游戏"] ]
        let map1 = new Map(arr)
        console.log(map1)//Map(3) {"name" => "小明", "age" => 16, "hobby" => "打游戏"}

      和Object的互转:

        let map = new Map([
            ['name','小明'],
            ['age',16],
            ['hobby','打游戏']
        ])
        let obj = {};
        for (let [k,v] of map) {
            obj[k] = v;
        }
        console.log(obj) //{name: "小明", age: 16, hobby: "打游戏"}
        let map1 = new Map();
        for(let key in obj){
            map1.set(key,obj[key])
        }
        console.log(map1)//Map(3) {"name" => "小明", "age" => 16, "hobby" => "打游戏"}
  • 相关阅读:
    [CF1076D] Edge Deletion
    [CF1081D] Maximum Distance
    [CF1095F] Make It Connected
    [CF1328E] Tree Queries
    [CF1328F] Make k Equal
    Codeforces Round #629 (Div. 3) 总结
    [CF1131D] Gourmet choice
    [CF1176D] Recover it!
    [CF1205B] Shortest Cycle
    [CF1213G] Path Queries
  • 原文地址:https://www.cnblogs.com/rickyctbur/p/11556223.html
Copyright © 2011-2022 走看看