2016-11-22 117 views
4

有没有一种方法可以打印给定int值的枚举字段的值?例如我有以下枚举:Javascript - 从值中打印枚举的名称

refractiveIndex = {"vacuum": 1, "air": 1.000293, "water": 1.33, "diamond": 2.419}; 

如果我有一个价值,是有没有办法打印枚举的名称。例如让我说我有一个变量设置为1,我想打印出“真空”,我该怎么做:

var value = 1; 
console.log(refractiveIndex(value)); // Should print "vacuum" to console 

+0

所以你基本上要切换键和值在原始对象? – nicovank

+1

如果有两个折射率相同的元素会怎样? – Barmar

回答

7

您可以迭代键并测试该属性的值。

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

https://jsfiddle.net/1qxp3cf8/

使用了...要经过对象道具erties并检查它是否等于您正在查找的值。

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);