有没有办法可以在给定int值的情况下打印枚举字段的值?例如,我有以下枚举:
refractiveIndex = {"vacuum": 1, "air": 1.000293, "water": 1.33, "diamond": 2.419};
如果我有值,有没有办法打印枚举的名称。例如,假设我将变量设置为1,我想打印出" vacuum",我该怎么做:
var value = 1;
console.log(refractiveIndex(value)); // Should print "vacuum" to console
答案 0 :(得分:11)
您可以迭代密钥并针对属性的值进行测试。
var refractiveIndex = {"vacuum": 1, "air": 1.000293, "water": 1.33, "diamond": 2.419},
value = 1,
key;
Object.keys(refractiveIndex).some(function (k) {
if (refractiveIndex[k] === value) {
key = k;
return true;
}
});
console.log(key);

ES6
var refractiveIndex = {"vacuum": 1, "air": 1.000293, "water": 1.33, "diamond": 2.419},
value = 1,
key = Object.keys(refractiveIndex).find(k => refractiveIndex[k] === value);
console.log(key);

答案 1 :(得分:1)
https://jsfiddle.net/1qxp3cf8/
用于...浏览对象属性并检查它是否等于您要查找的值。
refractiveIndex = {
"vacuum": 1,
"air": 1.000293,
"water": 1.33,
"diamond": 2.419
};
var value = 1;
for (prop in refractiveIndex) {
if (refractiveIndex[prop] == value) {
console.log(prop);
}
}
如果你想把它作为一个函数你可以写成:
function SearchRefractive(myValue) {
for (prop in refractiveIndex) {
if (refractiveIndex[prop] == myValue) {
return prop;
}
}
}
var value = 1;
SearchRefractive(value);