有两个数组,第二个数组里带有value 值为false 或者true,我要比较这两个数组,找出dmaId和id相同的并且值为TRUE的提出来放在一个新数组里面

有两个数组,第二个数组里带有value 值为false 或者true,我要比较这两个数组,找出dmaId和id相同的并且值为TRUE的提出来放在一个新数组里面,例如:

    var arr1 = [
            {id:1, dmaId:2, name:'aa'},
            {id:2, dmaid:3,name:'bb'}, 
            {id:3, dmaid:4, name:'cc'}
        ];
    var arr2 = [
            {id:2, name:'aa', value:true},
            {id:3, name:'bb', value:false},
            {id:4, name:'cc', value:true},
            {id:5, name:'dd', value:false},

        ];

我需要提取的新数组为:

    var arr3 = [
           {id:2, name:'aa', value:true},
           {id:4, name:'cc', value:true},
        ];

请问可以用什么方法啊?

var s=[]
  arr2.map((item,index)=>{
    arr1.map((item1,index1)=>{
      if(item.id==item1.dmaid&&item.value){
          s.push(item)
      }
    })
  })
  console.log(s,"s")

如果你这两个数组,长度不是固定的话,需要注意arr1,arr2的长度,双层map循环长度长的必须在外层循环。你也可以用for循环

var result=[]
 for(var i=0;i,i<arr2.length;i++){
   var obj=arr2[i]
   var id=arr2[i].id;
   var val=arr2[i].value;
   for(var j=0;j<arr1.length;j++){
     var dmaid=arr1[j].dmaid;
    if(dmaid==id&&val==true){
      result.push(obj);
    }
   }
 }
console.log(result)

如果对你有帮助望采纳,谢谢。

https://blog.csdn.net/sym134/article/details/82801561