循环javascript对象的属性

时间:2014-05-29 06:36:07

标签: javascript

我有一个循环所有对象属性的函数,如果它符合某个条件,则返回值

基本上这就是我在做的事情

  //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完全错误。任何帮助将不胜感激

此致

1 个答案:

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