例如
enum ABC { A = "a", B = "bb", C = "ccc" };
alert("B" in ABC); // true
alert("bb" in ABC); // false (i wanna true)
请记住,我们讨论字符串枚举功能。
答案 0 :(得分:3)
您的代码:
enum ABC {
A = "a",
B = "bb",
C = "ccc"
};
编译为以下JavaScript(see demo):
var ABC;
(function (ABC) {
ABC["A"] = "a";
ABC["B"] = "bb";
ABC["C"] = "ccc";
})(ABC || (ABC = {}));
这就是true
"A" in ABC
和false
获得"bb" in ABC
的原因。相反,你需要自己查看(即循环)值;一个短的班轮可能是这样的:
Object.keys(ABC).some(key => ABC[key] === "bb")
(或者如果支持,您可以使用Object.values
直接迭代值)
答案 1 :(得分:3)
你的枚举:
enum ABC {
A = "a",
B = "bb",
C = "ccc"
};
编译后(在运行时)变为此:
var ABC = {
A: "a",
B: "bb",
C: "ccc"
};
因此,您需要检查ABC
中的任何值是否为"bb"
。为此,您可以使用Object.values():
Object.values(ABC).some(val => val === "bb"); // true
Object.values(ABC).some(val => val === "foo"); // false