章鱼老板 2019-12-11 18:16 采纳率: 100%
浏览 306
已采纳

有两个数组,第二个数组里带有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},
        ];

请问可以用什么方法啊?

  • 写回答

2条回答 默认 最新

  • 崽崽的谷雨 2019-12-12 11:11
    关注
    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)
    

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?