Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript关联数组中枚举值的存在性测试_Javascript - Fatal编程技术网

JavaScript关联数组中枚举值的存在性测试

JavaScript关联数组中枚举值的存在性测试,javascript,Javascript,我使用以下语法在javascript中构建了一个“枚举”: MyEnum = { MY_VAL_1 : { name: "Value 1" }, MY_VAL_2 : { name: "Value 2" }, MY_VAL_3 : { name: "Value 3" } }; 我希望存储一个包含0个或多个枚举值的字典,并且我希望能够测试字典中是否存在任何特定值。我还想在一个下拉列表中显示字典中没有的值,在另一个下拉列表中显示字典中的值,并具有允许用户使用这些下拉列表在字

我使用以下语法在javascript中构建了一个“枚举”:

MyEnum = {
    MY_VAL_1 : { name: "Value 1" },
    MY_VAL_2 : { name: "Value 2" },
    MY_VAL_3 : { name: "Value 3" }
};
我希望存储一个包含0个或多个枚举值的字典,并且我希望能够测试字典中是否存在任何特定值。我还想在一个下拉列表中显示字典中没有的值,在另一个下拉列表中显示字典中的值,并具有允许用户使用这些下拉列表在字典中添加或删除值的按钮

我可以让下拉列表正常工作,但我无法在“for(x in MyEnum)”块之外的字典中测试是否存在。如果我使用:

list[MyEnum.MY_VAL_1]
我总是得到false(我想是因为项目存储时没有MyEnum名称空间?)。如果我尝试:

list[MY_VAL_1]
我刚刚得到一个未捕获的引用错误

我怎样才能让它工作,或者有更好的方法吗

以下是我到目前为止所做的一些工作:

JavaScript没有枚举。在ES5中,您可以将属性定义为sealed freezed等,这将使它们的性能类似于enum,但是,老实说,如果您发现自己在JavaScript中需要这样的功能,您可能需要重新考虑您的设计。这并不意味着您的设计一定很糟糕,而是JavaScript几乎不提供任何工具来实现您想要的功能


JavaScript没有枚举。在ES5中,您可以将属性定义为sealed freezed等,这将使它们的性能类似于enum,但是,老实说,如果您发现自己在JavaScript中需要这样的功能,您可能需要重新考虑您的设计。这并不意味着您的设计一定很糟糕,而是JavaScript几乎不提供任何工具来执行您想要的操作。

MyEnum.MY_VAL_1
返回您指定的对象,
{name:“Value 1”}

要测试某个值是否在“列表”(实际上是一个对象或字典)中,您应该使用以下代码:

if (list["MY_VAL_1"]) {
    alert('val 1 is in list');
}

MyEnum.MY_VAL_1
返回指定的对象,
{name:“Value 1”}

要测试某个值是否在“列表”(实际上是一个对象或字典)中,您应该使用以下代码:

if (list["MY_VAL_1"]) {
    alert('val 1 is in list');
}

您可以这样检查值:

if(MyEnum['MY_VAL_1']){
    alert('val 1 in the list');
}

您可以这样检查值:

if(MyEnum['MY_VAL_1']){
    alert('val 1 in the list');
}

谢谢,我就知道会很简单。我编辑了这个问题以使用正确的术语。谢谢,我知道这会很简单。我对问题进行了编辑,以使用正确的术语进行收集。