ES6: Map数据结构

概念: 类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

初识Map

let m1 = new Map([
  ["name", "Nathan"],
  ["age", 100],
  [{a:1}, "WUXI"]
])
console.log(m1); // Map(3) {'name' => 'Nathan', 'age' => 100, {…} => 'WUXI'}

let m2 = new Map()
m2.set("name", "Nathan")
m2.set("age", 100)
m2.set({a:1}, "WUXI")
console.log(m2); // Map(3) {'name' => 'Nathan', 'age' => 100, {…} => 'WUXI'}

实例的属性和方法

size:返回 Map 结构的成员总数。

Map.prototype.set(key,value):添加key对应的value,返回 Map 结构本身。

Map.prototype.get(key):获取key对应的value

Map.prototype.delete(key):删除某个键(键名+键值), 返回true或者false

Map.prototype.has(key):某个键是否在当前 Map 对象之中, 返回true或者false

Map.prototype.clear():清除所有成员,没有返回值。

let m1 = new Map([
  ["name", "Nathan"],
  ["age", 100],
  [{a:1}, "WUXI"]
])
console.log(m1); // Map(3) {'name' => 'Nathan', 'age' => 100, {…} => 'WUXI'}
console.log(m1.set("test", 100)); // Map(4) {'name' => 'Nathan', 'age' => 100, {…} => 'WUXI', 'test' => 100}
console.log(m1.get("age")); // 100
console.log(m1.delete("test")); // true
console.log(m1.has("test")); // false
console.log(m1); // Map(3) {'name' => 'Nathan', 'age' => 100, {…} => 'WUXI'}
m1.clear()
console.log(m1);

遍历

Map.prototype.keys():返回键名的遍历器。

Map.prototype.values():返回键值的遍历器。

Map.prototype.entries():返回所有成员的遍历器。

Map.prototype.forEach():遍历 Map 的所有成员。

let m1 = new Map([
  ["name", "Nathan"],
  ["age", 100],
  [{a:1}, "WUXI"]
])
for(let i of m1.keys()) {
  console.log(i); // name age {a: 1}
}
for(let i of m1.values()) {
  console.log(i); // Nathan 100 WUXI
}
for(let [index, item] of m1.entries()) {
  console.log(index + ': ' + item); 
}
for(let [index, item] of m1) { // m1和m1.entries()的迭代器是同一个迭代器
  console.log(index + ': ' + item); 
} 
/*
  name: Nathan
  age: 100
  [object Object]: WUXI
*/
m1.forEach((item, index) => {
  console.log(item, index);
})
/*
  Nathan name
  100 'age'
  WUXI {a: 1}
*/

参考: 014-ES6-Map数据结构_哔哩哔哩_bilibili

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值