假设下面我想改变有效的'对于' 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?
};
}
答案 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);