首页 > 其他 > 详细

Map和Set

时间:2021-05-11 17:01:13      阅读:13      评论:0      收藏:0      [点我收藏+]

Map和Set

  • JavaScript的对象有个问题,键key必须是字符串。但实际上Number或者其他数据类型作为键也是非常合理的。

  • 为了解决这个问题,最新的ES6规范引入了新的数据类型 Map。

    //如果用 Array 实现,需要两个 Array
    //给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,Array越长,耗时越长。
    var names = [‘Michael‘, ‘Bob‘, ‘Tracy‘];
    var scores = [95, 75, 85];
    //使用Map
    var m = new Map([[‘Michael‘, 95], [‘Bob‘, 75], [‘Tracy‘, 85]]);
    console.log(m.get(‘Michael‘)); // 95
    
  • Map的常用方法

    var m = new Map(); // 空Map 
    m.set(‘Adam‘, 67); // 添加新的key-value 
    m.has(‘Adam‘); // 是否存在key ‘Adam‘: true 
    m.get(‘Adam‘); // 67 
    m.delete(‘Adam‘); // 删除key ‘Adam‘ 
    m.get(‘Adam‘); // undefined
    //由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉
    var m = new Map();
    m.set(‘Adam‘, 67);
    m.set(‘Adam‘, 88);
    m.get(‘Adam‘); // 88
    
  • Set 和 Map 类似,也是一组key的集合,但不存储value。由于key不能重复,在 Set 中,没有重复的key

    //自动过滤相同的元素
    var s = new Set([1, 2, 3, 3, ‘3‘]);
    s; // Set {1, 2, 3, "3"}
    
  • Set的常用方法

    //通过 add(key) 方法可以添加元素到 Set 中,可以重复添加,但不会有效果
    s.add(4);
    s; // Set {1, 2, 3, 4} 
    s.add(4);
    s; // 仍然是 Set {1, 2, 3, 4}
    //通过 delete(key) 方法可以删除元素
    var s = new Set([1, 2, 3]);
    s; // Set {1, 2, 3} 
    s.delete(3);
    s; // Set {1, 2}
    
  • 遍历Map 和 Set,无法像数组一样遍历下标

    为了统一集合类型,ES6标准引入了新的 iterable 类型,Array,Map,Set

    具有 iterable 类型的集合可以通过forEach 循环来遍历

    var a = [‘A‘, ‘B‘, ‘C‘];
    var s = new Set([‘A‘, ‘B‘, ‘C‘]);
    var m = new Map([[1, ‘x‘], [2, ‘y‘], [3, ‘z‘]]);
    //以 Array 为例:
    a.forEach(function (element, index, array) {
        // element: 指向当前元素的值
        // index: 指向当前索引
        // array: 指向Array对象本身
        console.log(element + ‘, index = ‘ + index);
    });
    //Set 没有索引,因此回调函数的前两个参数都是元素本身
    var s = new Set([‘A‘, ‘B‘, ‘C‘]);
    s.forEach(function (element, sameElement, set) {
        console.log(element);  //A B C
    });
    //Map 的回调函数参数依次为 value 、 key 和 map 本身
    var m = new Map([[1, ‘x‘], [2, ‘y‘], [3, ‘z‘]]);
    m.forEach(function (value, key, map) {
        console.log(value); // x y z
    });
    

Map和Set

原文:https://www.cnblogs.com/saxonsong/p/14754373.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!