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

JS里面Map的使用以及与Object的对比

Map vs Object

顺序

Object:它的对象属性是无序的,或者是说不保证有序。

Map:它的键值对是按照插入的顺序存储的,是有序的。

键的类型

Object的键是字符串或Symbol类型。

Map的键可以是任意类型。

性能

Object在频繁增删时候性能不如Map。

迭代方式

Object不能通过for...of迭代,只能通过Object.keys(obj)或者Object.values(obj) 后进行迭代。

const obj = { a: 1, b: 2, c: 3 };
for (let key of Object.keys(obj)) {  
    console.log(key, obj[key]);
}
// output
// a 1
// b 2
// c 3
for (let val of Object.values(obj)) {  
    console.log(val);
}
// output
// 1
// 2
// 3

Map可以通过for...of迭代。也可以通过map.keys(), map.values(), map.entries() 或者键、值、键值对进行迭代。

const map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);
for (let [key, value] of map) {  
    console.log(key, value);
}
// output
// a 1
// b 2
// c 3

与JSON的结合

Object 和JSON能够很好地映射,不需额外的操作。

Map在转JSON方面就没那么友好。上面也提到了,Map的键值是可以任意类型的,所以它不能正确返回JSON格式。需要额外处理。

Map 提供了几个built-in的方法

set(key, val) 添加或更新键值元素。

get(key) 返回键对应的值。

delete(key) 删除键值对应的元素。

has(key) 判断是否存在该键。

clear() 清空所有元素。

size 返回元素数量。

keys() 返回可迭代的所有键列表。

values() 返回可迭代的所有的值列表。

entries() 返回可迭代的键值对列表。

总结

针对不同的使用场景,可以选择不同的方式,如果需要更加关注性能,需要频繁插入和删除元素,需要非字符串作为键的话,选用Map。否则可以选择Object即可。


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

相关文章:

  • 【CVE-2024-56145】PHP 漏洞导致 Craft CMS 出现 RCE
  • LabVIEW电机控制中的主动消抖
  • 数据结构经典算法总复习(下卷)
  • ROS1入门教程3:自定义消息
  • electron打包linux环境
  • 基于Spring Boot的找律师系统
  • 设计模式-读书笔记
  • 大数据——数据预处理
  • 【Spring】获取Bean对象需要哪些注解
  • 网络安全 | 防火墙的工作原理及配置指南
  • UE5材质系统之PBR材质
  • 天天 AI-241217:今日热点-谷歌版Sora升级4K高清!一句话控制镜头运动,跑分叫板可灵海螺
  • 【Qt笔记】QDockWidget控件详解
  • springboot446数字化农家乐管理平台的设计与实现(论文+源码)_kaic
  • 【泛微表单】流程相关信息修改
  • UVM 验证方法学之interface学习系列文章(十二)virtual interface 终结篇
  • CPU性能优化--函数分组
  • C语言入门指南:从零开始的编程之路
  • ZYNQ初识4(zynq_7010)基于vivado,利用simulator进行仿真调试和波形查看
  • 自动生成元启发式算法:大语言模型在优化领域的新应用
  • 单片机UDP数据透传
  • 【AI】✈️问答页面搭建-内网穿透公网可访问!
  • STM32二刷学习笔记--GPIO
  • HarmonyOS 实践 - 设计模式在代码中的作用
  • More Effective C++之效率Efficiency_中
  • STM32F407ZGT6-UCOSIII笔记10:消息传递--消息队列