• ES6 Map和Set的用法笔记


    640?wx_fmt=jpeg

    一、Map

    1、概念:Map用来保存键值对,类似于字典类型。任意值(对象或者原始值)都可以作为一个键或者一个值。

    2、Maps 和 Objects 用法比较

    Object对象的键只能是字符串或者 Symbols类型,但Map对象的键可以是任意值。

    Map 中的键值是有序的(FIFO 原则),而添加到Object中的键则不是。

    Map 的键值对个数可以根据 size 属性获取,而 Object 的键值对个数只能手动计算。

    Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。

    3、用法示例

    3.1定义

    var map= new Map();

    myMap.set(name, "小明"); //键值是字符串

    myMap.get(name);    // 小明

    var map= new Map();

    var keyobj={};

    map.set(keyobj, "小明"); //键值是对象

    map.get(keyobj);    // 小明

    var map= new Map(); //键值是函数

    var keyfunc=function() {};

    map.set(keyfunc, "小明");

    map.get(keyfunc);    // 小明

    var map= new Map(); //键值是NaN

    map.set(NaN, "小明");

    map.get(NaN);    // 小明

    3.2 遍历用法

    var map = new Map();

    map.set(0, "小明");

    map.set(1, "小王");

    //for...of

    for (var [key, value] of myMap) {

     console.log(key + " = " + value);

    }

    // forEach()

    myMap.forEach(function(value, key) {

    console.log(key + " : " + value);

    }, myMap)

    3.3 Map对象操作

    var arr = [["name", "小明"], ["age", 50]];

    var map = new Map(arr);

            // Map 构造函数可以将一个 二维 键值对数组转换成

            一个 Map 对象

    var outArray = Array.from(map);// 使用 Array.from 函数可以将一个 Map 对象转换成一个二维键值对数组

    var map2=new Map(map);//Map拷贝功能

    var map3=new Map([map,map2]);//合并两个 Map 对象时,如果有重复的键值,则后面的会覆盖前面的

    console.log(map);

    二、Set对象

    1、概念:Set对象用来存储任意类型的唯一值。

    特殊情况:

    1、+0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复;

    2、undefined 与 undefined 是恒等的,所以不重复。

    3、NaN 与 NaN 是不恒等的,但是在 Set 中只能存一个。

    2、用法示例

       let mySet = new Set();

    mySet.add(1);

    mySet.add(5);

    mySet.add(5);

    mySet.add("some text");

    console.log(mySet);

    var mySet = new Set(["小明", "小王", "小张"]); //数组转set

    var mySet = new Set('小明');//字符串转set

    var mySet = new Set([1, 2, 3, 4, 4]);// [1, 2, 3, 4]

    //并集

    var a = new Set([1, 2, 3]);

    var b = new Set([4, 3, 2]);

    var union = new Set([...a, ...b]); // {1, 2, 3, 4}

    //交集

    var a = new Set([1, 2, 3]);

    var b = new Set([4, 3, 2]);

    var intersect = new Set([...a].filter(x => b.has(x))); // {2, 3}

    // 差集

    var a = new Set([1, 2, 3]);

    var b = new Set([4, 3, 2]);

    var difference = new Set([...a].filter(x => !b.has(x))); // {1}

  • 相关阅读:
    vb做界面调用c编写的dll
    小记管线冲洗(现场学习)
    管网建模基础
    编写成绩信息管理系统
    MJRefresh超详细讲解
    iOS 在xib或者storyboard中添加AutoLayout后,在代码中修改AutoLayout约束条件
    tableViewCell重用导致图片错乱问题
    更新ruby
    控件基本动画
    Block动画和spring动画
  • 原文地址:https://www.cnblogs.com/hgmyz/p/12350951.html
Copyright © 2020-2023  润新知