当前位置: 首页 > 知识库问答 >
问题:

Java-常量样的地图对象在Javascript[重复]

慕容成文
2023-03-14

我试图让一个类似Java的静态映射对象在Javascript中工作。我不是javascript专家,但我想知道这是否可行。我想做的是:

我正在定义

const MY_CONST_1 = 'Constant 1 value';
const MY_CONST_2 = 'Constant 2 value';

还有这样一个“类似地图”的物体:

const CONST_AMOUNT_MAP = {
  MY_CONST_1: 30,
  MY_CONST_2: 22
}

然后,在我定义的函数中:

function getAmount(constValue) {
   return CONST_AMOUNT_MAP[constValue];
}

我的期望是,当使用

getAmount('Constant 1 value')

返回数字“30”。然而

CONST_AMOUNT_MAP[constValue];

返回“未定义”。只有

CONST_AMOUNT_MAP[MY_CONST_1] 

返回正确的金额。

是否可以定义一个对象,例如CONST_AMOUNT_MAP,允许基于预定义的const变量而不是基于const的实际值查找条目?

非常感谢。

共有1个答案

冷俊健
2023-03-14

当您定义对象文字时,键名称是按字面意思给出的——它们不会被计算。换句话说:

const CONST_AMOUNT_MAP = {
    MY_CONST_1: 30,
    MY_CONST_2: 22
}

...使用名为MY\u CONST\u 1的键生成对象,而不是使用名称MY\u CONST\u 1定义的任何变量的值。

您可以通过声明封装在[]中的密钥来实现您的目标,这将强制对封闭的进行求值。

const CONST_AMOUNT_MAP = {
    [MY_CONST_1]: 30,
    [MY_CONST_2]: 22
}

const CONST_AMOUNT_MAP = {};
CONST_AMOUNT_MAP[MY_CONST_1] = 30;
CONST_AMOUNT_MAP[MY_CONST_2] = 22;

请注意,无论如何添加键,它们都必须是字符串或符号。既然您提到了“映射”,请注意JS中有真正的映射,其中键可以是任何数据类型。

 类似资料:
  • 问题内容: 我刚刚发现了chromestatus.com,在失去了一天的时间后,发现了以下功能条目: 映射:映射对象是简单的键/值映射。 那让我感到困惑。常规JavaScript对象是字典,那么它与字典有何不同?从概念上讲,它们是相同的(根据 Map和Dictionary之间的区别是什么?) chromestatus文档参考也无济于事: 映射对象是键/值对的集合,其中键和值都可以是任意ECMASc

  • 本文向大家介绍JavaScript常用本地对象小结,包括了JavaScript常用本地对象小结的使用技巧和注意事项,需要的朋友参考一下 一、javascript是面向对象的编程语言 封装:把相关的信息(无论数据或方法)存储在对象中的能力 聚集:把一个对象存储在另一个对象内的能力 继承:由另一个类(或多个类)得来类的属性和方法的能力。 多态:编写能以多种形态运行的函数或方法的能力 二、Array对象

  • 问题内容: 我有一些像这样的结构化JSON数据。假设这是可以通过以下方式互换的: 我需要它看起来像这样,重新映射到,并以与结果: 最明显的方法是这样的: 一切都很好,但如果数组中有200,000个对象怎么办?这是很多处理开销。 有没有更有效的方法来重新映射键名? 可能不会遍历整个对象数组?如果您的方法更有效,请提供证明/参考。 问题答案: 正如我在评论中已经提到的那样,如果可以对对象的值进行某些假

  • 可能的重复: 通过JavaScript对象循环 获取对象键的数组 有没有方法在JavaScript中使用hashmaps。我找到了这个页面,它展示了在JavaScript中使用hashmaps的一种方法。基于此,我将数据存储如下: 但是我想要对象的键集(所有键),就像在Java()中那样。 谁能给我演示一下如何获得这个对象中存在的所有键?

  • 我在使用recycler视图启动活动时出错,因此我有3个文件java类、一个适配器和要执行的活动。 java类只是一个具有3个变量的简单对象 回收器视图的适配器 以及活动 我得到的错误是: 我在一个空项目上做了同样的配置,一切看起来都是正确的,

  • 所以我有一个整数的列表,它是内部的,从这里我可以得到一个Abc的列表,我想把它们映射到map中的一个条目(注意,我们不能从Abc.getIns中获取内部) 这就是我想要的:(但由于我们没有GetInsin,我们不能这样写) 我不知道如何编写它,以获得我想要的映射关系。 已知整数列表:内部 将获取insIds并返回列表的已知函数: 然后是我不确定的:如何将insin映射到AbcId (预期输出: