ES6: Map数据结构

简介: 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


相关文章
|
4月前
|
存储 索引 容器
数据结构之Map/Set讲解+硬核源码剖析(二)
数据结构之Map/Set讲解+硬核源码剖析(二)
52 0
|
4月前
|
JavaScript 前端开发
JavaScript一种新的数据结构类型Map
JavaScript一种新的数据结构类型Map
|
5月前
|
存储 安全 Java
Go 基础数据结构的底层原理(slice,channel,map)
Go 基础数据结构的底层原理(slice,channel,map)
56 0
|
6月前
|
存储 安全 Java
数据结构之Map基础入门与详解
数据结构之Map基础入门与详解
81 0
|
7月前
|
存储 自然语言处理 安全
数据结构 - 7(Map和Set 15000字详解)
数据结构 - 7(Map和Set 15000字详解)
64034 16
|
7天前
|
存储 C++ 容器
[数据结构]-map和set
[数据结构]-map和set
|
4月前
|
存储 Java
数据结构之Map/Set讲解+硬核源码剖析(三)
数据结构之Map/Set讲解+硬核源码剖析(三)
21 0
|
4月前
|
存储 自然语言处理 Java
数据结构之Map/Set讲解+硬核源码剖析(一)
数据结构之Map/Set讲解+硬核源码剖析(一)
29 0
|
5月前
ES6学习(七)—Set 和 Map 数据结构
ES6学习(七)—Set 和 Map 数据结构
|
6天前
|
机器学习/深度学习 算法 测试技术
【单调栈】3113. 边界元素是最大值的子数组数目
【单调栈】3113. 边界元素是最大值的子数组数目