JS - 遍历一个对象并更改其属性值?

时间:2015-06-18 23:48:45

标签: javascript

假设下面我想改变有效的'对于' a'' b'和' c'等于真。对象foo。

var foo = {
    a: {
        valid: false,
        required: true
    },
    b: {
        valid: false,
        required: true
    },
    c: {
        valid: false,
        required: true
    }
};

for (var key in foo) {
    var obj = foo[key];
    for (var prop in obj) {
        if (obj.hasOwnProperty(prop)) {
            //how can I assign valid to true here?
        };

    }

2 个答案:

答案 0 :(得分:2)

你使这变得比它需要的更复杂。

这样做:

for( var key in foo ) {
    foo[key].valid = true;
}

或者,如果您担心网页中的某些代码可能会使用可枚举属性扩展Object.prototype,那么您可以这样做:

for( var key in foo ) {
    if( foo.hasOwnProperty(key) ) {
        foo[key].valid = true;
    }
}

但是没有人应该使用可枚举属性扩展Object.prototype。这打破了各种代码。这是一个你不必担心的问题。

答案 1 :(得分:0)

像这样:FIDDLE

for (var key in foo) {
    var obj = foo[key];
    for (var prop in obj) {
        if (obj.hasOwnProperty("valid")) { //checks if "valid" exists
            if (!obj.valid) { //if valid=false change to true, else ignore
                obj.valid = true;
            };
        }

    }
}
console.log(foo);