2016-11-22 5 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

同じ屈折率を持つ2つの要素がある場合はどうなりますか? – 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/

のための...オブジェクトの小道具を通過するの

使用あなたが探している値と等しいかどうかを確認してください。

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); 
関連する問題