ES6 中的映射与对象,何时使用?

2023-12-04

参考:MDN 地图

当键在运行时之前未知时,以及当 所有键都是相同类型,所有值都是相同类型。

当存在对单个元素进行操作的逻辑时,请使用对象。

问题:

在对象上使用映射的适用示例是什么?特别是“什么时候密钥在运行时之前是未知的?”

var myMap = new Map();

var keyObj = {},
    keyFunc = function () { return 'hey'},
    keyString = "a string";

// setting the values
myMap.set(keyString, "value associated with 'a string'");
myMap.set(keyObj, "value associated with keyObj");
myMap.set(keyFunc, "value associated with keyFunc");

console.log(myMap.get(keyFunc));

在对象上使用映射的适用示例是什么?

我认为你已经给出了一个很好的例子:你至少需要使用Map当您使用对象(包括 Function 对象)作为键时。

特别是“什么时候密钥在运行时之前是未知的?”

每当它们在编译时未知时。简而言之,您应该始终使用Map当你需要一个核心价值收藏。当您从集合中动态添加和删除值时,特别是当您事先不知道这些值时(例如,它们是从数据库中读取的、由用户输入的等),可以很好地表明您需要集合。

相反,当您在编写代码时知道对象具有哪些属性和多少个属性时(当它们的形状是静态的时),您应该使用对象。正如@Felix 所说:当你需要一个record。当字段具有不同类型,并且您从不需要使用括号表示法(或期望其中包含一组有限的属性名称)时,一个很好的指示就是需要这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ES6 中的映射与对象,何时使用? 的相关文章

随机推荐

  • 如何旋转 pandas 图中的 x 轴刻度标签

    使用以下代码 import matplotlib matplotlib style use ggplot import matplotlib pyplot as plt import pandas as pd df pd DataFrame
  • LSTM 时间序列会产生偏移预测吗?

    我正在使用 LSTM NN 和 Keras 进行时间序列预测 作为输入特征 有两个变量 降水量和温度 要预测的一个目标是地下水位 尽管实际数据和输出之间存在严重的偏移 见图 但它似乎工作得很好 现在我读到这可能是网络无法正常工作的典型标志
  • 在 mac os 上的 nasm 中编译汇编程序

    所以 我写了一些关于asm的指令 并编译它们 nasm f macho test asm 现在 nasm生成obj文件 test o gcc test o 返回下一个错误 ld 警告 忽略文件 test o 文件是为不受支持的文件构建的 不
  • Hibernate 二级缓存不适用于 OneToOne 关联

    我正在尝试启用 Hibernate 二级缓存 但无法避免为一对一关系发出多个查询 我的模型是 Entity Cache usage CacheConcurrencyStrategy READ WRITE public class Busin
  • 具有 SearchView 功能的 Android MultiChoice Spinner

    希望你一切顺利 我遇到了要实施的问题Search功能在MultiChoice Spinner 正如我所实施的多项选择旋转器在那个使用的AlertDialog显示多项选择项 添加过滤器功能有两个选项 Add EditText在 AlertDi
  • 使用 EL 变量调用 EL 函数(如 ${fn:toLowerCase(${Person.name})} )不起作用

    我正在传递一颗豆子 Person到我的jsp页面 我想以小写形式打印他的名字 为此 我调用 jstl 的函数toLowerCase 但这不起作用
  • FireBase 查询。数据快照

    我需要帮助从该 DataSnapshot 结果获取 消息 对象 DataSnapshot key user 4 value JvFuwKX7r7o0ThXc0x8 sender unit owner message fkfkgkgkgkgg
  • 从向量创建一系列向量

    我有一个简单的两个向量数据帧 长度 30 看起来像这样 gt mDF Param1 w IL L 1 AuZgFw 0 5 2 AuZfFw 2 3 AuZgVw 74 3 4 AuZfVw 20 52 5 AuTgIL 80 9 6 Au
  • Java JTextArea 动态列和行编号

    我快速谷歌了一下 似乎找不到一个好的解决方案 主要是因为我不知道如何描述它 本质上 我需要在一个文件中显示任意数量的十六进制字符JTextArea 我想让它们均匀分布 并将字符的位置显示在字符的顶部和左侧 这是我想要实现的一个示例 这是十六
  • C# 在控制器中使用 LINQ 语法生成错误

    大家好 我在此控制器代码的第 11 行出现以下错误 public JsonResult GetChartData IncidentsBySiteStatus string SiteTypeId string searchTextSite s
  • 在 JSON 中查找深层嵌套的键/值

    假设我有一个像这样的 JSON 数组 id 429d30a1 9364 4d9a 92e0 a17e00b3afba children parentid name Expo Demo id f80f1034 9110 4349 93d8 a
  • HTACCESS - 重定向

    我有一些旧文件 homepage html 和 home html 我确信人们已经为它们添加了书签 所以我想将它们重定向到父网址 我已经浏览过谷歌 但他们似乎不符合我的期望 例如 www nicetomeetyou com home htm
  • 基于MetadataType的ASP.Net C#验证模型

    我的团队正在构建 ViewModel 并在 MetadataType 中进行模型验证 我的问题是 我使用的是非 MVC 项目 我可以用它来验证模型吗 如果是 您能举个例子吗 MetadataType typeof PersonMetadat
  • 自动打开侧载任务窗格

    是否可以自动打开处于开发人员模式的插件 根据文档 您指定自动打开的窗格仅在以下情况下才会打开 该加载项已安装在用户的设备上 如果用户这样做 打开文档时未安装加载项 自动打开 功能将不起作用并且该设置将被忽略 如果你也 要求加载项与您需要设置
  • python tkinter:检测触摸板上的水平滚动

    我有一个 大 python tkinter 画布 使用箭头键和 Shift 鼠标滚轮进行导航非常简单 但我也想通过笔记本电脑触摸板上的两根手指来完成此操作 今天我发现它可以识别水平滚动 Ubuntu 16 04 LTS Python 2 x
  • 梯度如何通过 tf.py_func 传递

    这是张量流中的 Faster R CNN 实现 The 提案层 is 实施通过蟒蛇 我很好奇梯度是否可以通过tf py func权重和偏差不断变化所以我认为梯度传递成功 然后我做了一个小测试 import tensorflow as tf
  • gcloud 可以连接,但 gsutil 无法连接

    尝试使用gcloud gsutil从笔记本电脑 gcloud可以连接但是gsutil cannot mylaptop jamiet gcloud projects list head 2 PROJECT ID NAME PROJECT NU
  • 具有安全性和配置文件效率的 MEF 插件

    我有一个具有许多模块 插件的应用程序 我使用带有目录插件的 MEF 来导入它们 每个用户都有一个存储在数据库中的可用模块列表 并且每个用户可以有多个配置文件来控制哪些模块可见 有一个概述区域 显示来自具有 ImportMany typeof
  • 重定向命令行输出以防止错误消息显示在命令窗口中

    我正在测试文件夹是否存在 并且根据它的存在 我想运行不同的命令 DIR MYDIR tmp gt test txt IF ERRORLEVEL 1 echo FOLDER DOES NOT EXIST else echo FOLDER EX
  • ES6 中的映射与对象,何时使用?

    参考 MDN 地图 当键在运行时之前未知时 以及当 所有键都是相同类型 所有值都是相同类型 当存在对单个元素进行操作的逻辑时 请使用对象 问题 在对象上使用映射的适用示例是什么 特别是 什么时候密钥在运行时之前是未知的 var myMap