尝试下面的代码但没有得到预期的输出 我期待以下输出
[{"label":"one","value":"1","disabled":true},{"label":"two","value":"2","disabled":true},{"label":"three","value":"3","disabled":false},{"label":"four","value":"4","disabled":false},{"label":"five","value":"5","disabled":false},{"label":"six","value":"6","disabled":true}]
// ---
var A1 = [ {label:"one", value:"1"}, {label:"two", value:"2"}, {label:"six", value:"6"}];
var A2 = [ {label:"one", value:"1","disabled":false}, {label:"two", value:"2","disabled":false}, {label:"three", value:"3","disabled":false}, {label:"four", value:"4","disabled":false}, {label:"five", value:"5","disabled":false}, {label:"six", value:"6","disabled":false}];
for(let i = 0 ; i <A2.length; i++){
for(let j = 0; j < A1.length; j++){
if(A1[j].value == A2[i].value){
A2[i].disabled = true;
}
else{
A2[i].disabled = false;
}
}
}
console.log( JSON.stringify( A2 ) );
最佳答案
如果我正确理解你想要做什么,那么应该执行以下操作:
for(let i = 0 ; i <A2.length; i++){
A2[i].disabled = false;
for(let j = 0; j < A1.length; j++){
if(A1[j].value == A2[i].value){
A2[i].disabled = true;
break;
}
}
}
也就是说 - 从 false
值(不匹配)开始,只有在找到匹配时才将其设置为 true
。 (然后break
跳出内部循环,因为不需要继续。)
关于javascript - for循环内的对象循环数组只接受javascript中的最后一个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52879943/