Javascript - 从值打印枚举的名称

时间:2016-11-22 22:29:58

标签: javascript enums

有没有办法可以在给定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

2 个答案:

答案 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);
相关问题