javascript基础学习系列八十九:Map 基本API

使用 new 关键字和 Map 构造函数可以创建一个空映射: const m = new Map();
如果想在创建的同时初始化实例,可以给 Map 构造函数传入一个可迭代对象,需要包含键/值对数 组。可迭代对象中的每个键/值对都会按照迭代顺序插入到新映射实例中:

// 使用嵌套数组初始化映射 const m1 = new Map([
      ["key1", "val1"],
      ["key2", "val2"],
      ["key3", "val3"]
    ]);
    alert(m1.size); // 3
// 使用自定义迭代器初始化映射 const m2 = new Map({
      [Symbol.iterator]: function*() {
        yield ["key1", "val1"];
        yield ["key2", "val2"];
        yield ["key3", "val3"];
} });
    alert(m2.size); // 3
// 映射期待的键/值对,无论是否提供
const m3 = new Map([[]]); alert(m3.has(undefined)); // true alert(m3.get(undefined)); // undefined

初始化之后,可以使用 set()方法再添加键/值对。另外,可以使用 get()和 has()进行查询,可 以通过 size 属性获取映射中的键/值对的数量,还可以使用 delete()和 clear()删除值。

   const m = new Map();
    alert(m.has("firstName"));  // false
    alert(m.get("firstName"));  // undefined
    alert(m.size);              // 0
    m.set("firstName", "Matt")
     .set("lastName", "Frisbie");
    alert(m.has("firstName")); // true
    alert(m.get("firstName")); // Matt
    alert(m.size);             // 2
m.delete("firstName"); // 只删除这一个键/值对
    alert(m.has("firstName")); // false
    alert(m.has("lastName"));  // true
    alert(m.size);             // 1
m.clear(); // 清除这个映射实例中的所有键/值对
    alert(m.has("firstName")); // false
    alert(m.has("lastName"));  // false
    alert(m.size);             // 0

set()方法返回映射实例,因此可以把多个操作连缀起来,包括初始化声明:

const m = new Map().set("key1", "val1");
    m.set("key2", "val2")
     .set("key3", "val3");
    alert(m.size); // 3

与 Object 只能使用数值、字符串或符号作为键不同,Map 可以使用任何 JavaScript 数据类型作为 键。Map 内部使用 SameValueZero 比较操作(ECMAScript 规范内部定义,语言中不能使用),基本上相 当于使用严格对象相等的标准来检查键的匹配性。与 Object 类似,映射的值是没有限制的。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值