我有一个循环所有对象属性的函数,如果它符合某个条件,则返回值
基本上这就是我在做的事情
//an enum
var BillingType = Object.freeze({
PayMonthly: { key: 'Monthly', value: 1 },
PayYearly: { key: 'Yearly', value: 2 }
});
现在让它工作我这样做
for (var property in BillingType ) {
if (BillingType .hasOwnProperty(property)) {
if (value === BillingType [property].value) {
return BillingType [property].key;
}
}
}
它工作正常但是为了使所有枚举变得通用我将代码更改为
getValue = function (value, object) {
for (var property in object) {
if (object.hasOwnProperty(property)) {
if (value === object[property].value) {
return object[property].key;
}
}
}
}
现在当我尝试从其他功能打电话
enumService.getValue(1, 'BillingModel');
而是循环所有属性,它开始循环其字符。
如何将字符串转换为对象或m完全错误。任何帮助将不胜感激
此致
答案 0 :(得分:3)
您的getValue
看起来不错,只需使用
enumService.getValue(1, BillingModel); // <-- no quotes
这是一个工作小提琴:http://jsfiddle.net/LVc6G/
这里是小提琴的代码:
var BillingType = Object.freeze({
PayMonthly: { key: 'Monthly', value: 1 },
PayYearly: { key: 'Yearly', value: 2 }
});
var getValue = function (value, object) {
for (var property in object) {
if (object.hasOwnProperty(property)) {
if (value === object[property].value) {
return object[property].key;
}
}
}
};
alert(getValue(1, BillingType));