Pertanyaan Javascript - mencetak nama enum dari suatu nilai


Apakah ada cara saya dapat mencetak nilai-nilai bidang enum diberikan nilai int? misalnya saya memiliki enum berikut:

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

Jika saya memiliki nilai, apakah ada cara untuk mencetak nama enum. Sebagai contoh katakanlah saya memiliki satu set variabel ke 1 dan saya ingin mencetak "vakum", bagaimana saya melakukannya:

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

?


5
2017-11-22 22:29


asal


Jawaban:


Anda bisa mengulang kunci dan menguji nilai properti.

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


8
2017-11-22 22:34



https://jsfiddle.net/1qxp3cf8/

gunakan untuk ... untuk pergi melalui properti objek dan memeriksa apakah itu sama dengan nilai yang Anda cari.

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

jika Anda menginginkannya sebagai fungsi, Anda dapat menulisnya seperti ini:

function SearchRefractive(myValue) {
    for (prop in refractiveIndex) {
      if (refractiveIndex[prop] == myValue) {
        return prop;
      }
    }
}
var value = 1;
SearchRefractive(value);

1
2017-11-22 22:34