javascript - for循环内的对象循环数组只接受javascript中的最后一个条件

标签 javascript

尝试下面的代码但没有得到预期的输出 我期待以下输出

[{"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/

相关文章:

javascript - 如何在 ExtReact 中正确布局表单中的元素?

javascript - 为什么<tr/>元素的lastChild不是<td/>元素?

javascript - 如何将静态文本添加到输入值

javascript - D3 - 无法从 csv 获取压缩圆圈

javascript - 使用 useEffect 和 useCallback 无限循环 - Reactjs

javascript - Jquery bxslider异常

javascript - 使用 Angular UI Router,如何使一个状态成为所有状态的子状态?

javascript - 如何使用 PHP 和 AJAX 从 MySQL 创建 JavaScript 变量?

javascript - 对象不支持属性或方法 'addEventListener'

javascript - 如何检查手机 web 应用程序在手机中的 html 代码兼容性