簡體   English   中英

測試JavaScript關聯數組中是否存在枚舉值

[英]Testing for existence of enumeration value in a JavaScript associative array

我使用以下語法在javascript中構建了“枚舉”:

MyEnum = {
    MY_VAL_1 : { name: "Value 1" },
    MY_VAL_2 : { name: "Value 2" },
    MY_VAL_3 : { name: "Value 3" }
};

我想存儲一個包含0個或多個這些枚舉值的字典,並且我希望能夠測試字典中是否存在任何特定值。 我還想顯示下拉列表中不在字典中的值,以及另一個下拉列表中在字典中的值,並具有允許用戶使用這些下拉列表向字典中添加或刪除值的按鈕。

我可以使下拉列表正常工作,但是無法測試字典中是否存在for(在MyEnum中為x)字段之外的字典。 如果我使用:

list[MyEnum.MY_VAL_1]

我總是錯誤的(我想是因為項目存儲時沒有MyEnum名稱空間?)。 如果我嘗試:

list[MY_VAL_1]

我剛收到一個Uncaught ReferenceError。

我如何才能使它正常工作,或者有更好的方法來做到這一點?

這是到目前為止我所做的事情的jsFiddle: http : //jsfiddle.net/jKfbh/3/

MyEnum.MY_VAL_1返回您指定的對象{ name: "Value 1" }

要測試值是否在“列表”(實際上是對象或字典)中,應使用以下代碼:

if (list["MY_VAL_1"]) {
    alert('val 1 is in list');
}
var MyEnum = {
MY_VAL_1 : { name: "Value 1" },
MY_VAL_2 : { name: "Value 2" },
MY_VAL_3 : { name: "Value 3" }
};
alert("MY_VAL_1" in MyEnum);

JavaScript沒有枚舉。 在ES5中,您可以將屬性定義為密封凍結等,從而使它們的性能類似於枚舉,但是,老實說,如果您發現自己需要JavaScript中的這種功能,則可能需要重新考慮設計。 這並不意味着您的設計一定很糟糕,而是JavaScript幾乎不提供執行所需功能的工具。

您可以像這樣檢查值:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM