我创建了类似于ENUM的东西:
var ContentStatusId = {
All: 0,
Production: 1,
Review: 2,
Draft: 3,
Concept: 4
}
所以当我设置:
var a = ContentStatusId.All
它的值为0
我怎么能朝另一个方向走?如果我知道a = 0且a来自ContentStatusId那么我怎样才能得到字符串“All”?
答案 0 :(得分:1)
迭代属性,直到找到具有所需值的属性
function findVal(obj, val) {
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) { // skip inherited properties
if (obj[prop] == val) {
return prop;
}
}
}
return false;
}
答案 1 :(得分:0)
您必须遍历属性并检查它们是否等于每次迭代的值:
for (var property in ContentStatusId) {
if (ContentStatusId.hasOwnProperty(property)) {
if (ContentStatusId[property] == /*value to look for*/) {
console.log(property);
}
}
}
答案 2 :(得分:0)
你不能直接这样做。你必须把钥匙存放在某个地方......
var a = ['All', ContentStatusId.All];
或更高级:
var a = {
source: ContentStatusId,
key: 'All',
update: function () {
this.value = this.source[this.key];
}
};
a.update();
答案 3 :(得分:0)
根据您的操作,您可以迭代对象,或者如果您必须更频繁地执行此操作,只需创建一个可以进行反向查找的数组:
var ContentStatusIdReverse = ["All","Production",...]
ContentStatusIdReverse[0] // Yields "All"
您可以通过迭代对象一次来创建此数组,并且可以通过数组完成所有连续查找。