zoukankan      html  css  js  c++  java
  • ES6 Map对象与Set对象

    Map 对象

    Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。

    一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值:字符串、对象、函数、NaN

    1、set() 方法为Map对象添加一个指定键(key)和值(value)的新元素。返回Map对象。若已经存在键,则更新键值,否则,重新建立新键。

    2、get() 方法用来获取一个 Map 对象中指定的元素。

    var myMap = new Map();
    var keyString = "0"; 
     
    myMap.set(keyString, "zero");
     
    myMap.get(keyString);    // "字符串"
    myMap.get("0");   // "字符串"  因为 keyString === 'a string'

    //再加一个
    myMap.set("1", "one");
    myMap.size;//2
    var outArray = Array.from(myMap);//[["0","zero"],["1","one"]]  Map对象转化为数组,可以看出outArray是一个二维数组,可以通过outArray[0][0] 访问具体值
    实例:判断有效的括号
    var isValid = function(s) {//有效的括号
        const n = s.length;
        if (n % 2 === 1) {
            return false;
        }
        const pairs = new Map([
            [')', '('],
            [']', '['],
            ['}', '{']
        ]);
        const stk = [];
        s.split('').forEach(ch => {
            if (pairs.has(ch)) {
                if (!stk.length || stk[stk.length - 1] !== pairs.get(ch)) {
                    return false;
                }
                stk.pop();
            } 
            else {
                stk.push(ch);
            }
        });
        return !stk.length;
    };

    遍历Map方式:

    for...of  

    var myMap = new Map();
    myMap.set(0, "zero");
    myMap.set(1, "one");
     
    // 遍历map
    for (var [key, value] of myMap) {
      console.log(key + " = " + value);
    }

    myMap.entries();//返回Iterator 对象,包含了 Map 对象中每个元素的 [key, value] 数组。
    //Iterator对象:是一个引用型变量,为了遍历容器对象中的元素而不暴露容器对象内部的细节
    myMap.keys();//返回Iterator 对象,包含了 Map 对象中每个元素的key。
    //for(var key of myMap.keys())

    myMap.values();//
    返回Iterator 对象,包含了 Map 对象中每个元素的value。

    forEach()

    // 将会显示两个 logs。 一个是 "0 = zero" 另一个是 "1 = one"
    myMap.forEach(function(value, key) {
      console.log(key + " = " + value);
    }, myMap)

    Set 对象

    Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

    let mySet = new Set();
     
    mySet.add(1); // Set(1) {1}
    mySet.add(5); // Set(2) {1, 5}
    mySet.add(5); // Set(2) {1, 5} 这里体现了值的唯一性
    mySet.add("some text"); // Set(3) {1,5,"some text"}

    set对象作用

    1、数组去重

    var mySet = new Set([1, 2, 3, 4, 4]);
    [...mySet]; // [1, 2, 3, 4]  直接输出mySet,是set对象。

    2、并集

    var a = new Set([1, 2, 3]);
    var b = new Set([4, 3, 2]);
    var union = new Set([...a, ...b]); // set(4) {1, 2, 3, 4} 
    var myArray = [...union];//[1,2,3,4] 数组与set对象互相转换的方法

    3、交集、差集(略)

    学习原文 

  • 相关阅读:
    hibernate学习四 hibernate关联关系映射
    三 vue学习三 从读懂一个Vue项目开始
    hibernate学习三 精解Hibernate之核心文件
    hibernate学习二 基本用法
    hibernate 学习 一 基本概念
    Hibernate一级缓存和二级缓存
    hibernate VS mybatis
    hibernate的优缺点和适用场合
    mybatis 优缺点和适用场合
    【Loadrunner接口测试】什么情况需要区分PC和手机端去做压测?
  • 原文地址:https://www.cnblogs.com/liangtao999/p/11695997.html
Copyright © 2011-2022 走看看