当前位置: 首页 > article >正文

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


http://www.kler.cn/a/37835.html

相关文章:

  • 实现高效数据处理的利器:Java Stream API 的妙用与性能优化
  • 基于 Jieba 和 Word2vec 的关键词词库构建
  • 【HarmonyOS】ArkTS学习之页面转场动画的实现
  • Android复杂UI的性能优化实践 - PTQBookPageView 性能优化记录
  • 一百二十八、Kettle——从Hive增量导入到ClickHouse
  • VR智慧城市:实现城市智能化发展,激发经济更大活力
  • Qt+C++多线程thread-QThread-QTimer视频-控件动画-混合应用实例
  • 在线培训系统的保障措施带来安全、可靠的学习环境
  • Java 常用的重构技巧指南 v1.0
  • 如何提升民宿营业额?民宿管理系统有什么用?
  • c++模板编程-非类型模板参数
  • Elasticsearch 搜索推荐
  • 【SQL应知应会】表分区(一)• MySQL版
  • 论文笔记--TinyBERT: Distilling BERT for Natural Language Understanding
  • 【设计模式】工厂方法模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
  • RabbitMQ【笔记整理+代码案例】
  • 【数据挖掘】时间序列教程【二】
  • 【hadoop】在linux上设置Hadoop的环境变量
  • superheat | 超级简单的热图绘制解决方案!~(二)(聚类和注释图的添加~)
  • Spark(24):Spark内核概述