一颗青柠~ 2021-12-30 11:27 采纳率: 71.4%
浏览 51
已结题

js怎么和预期的结果不一样

let datamap = [{alwaysReceive:true,origin:'1',target:'2'},{alwaysReceive:true,origin:'2',target:'5'},{alwaysReceive:false,origin:'3',target:'2'}]
let source = [{id:'1',v:'2',t:"9"},{id:'2',v:'88',t:"2"},{id:'3',v:'0',t:"4"}]
var result = [];
  var alwaysReceiveList = []
  datamap.forEach(dmitem=>{
      var tmp = source.find(sitem=>{
          return  dmitem.origin === sitem.id
      });
      console.log(tmp);
      
      if(tmp){
          tmp.id = dmitem.target;
          console.log('1',tmp);
          
          if(dmitem.alwaysReceive){
              alwaysReceiveList.push(tmp) 
          }
          result.push(tmp);
      }
  });
  console.log(result,alwaysReceiveList);

我想要的是result应该为 result:[{id:'2',v:'2',t:"9"},{id:'5',v:'88',t:"2"},{id:'3',v:'0',t:"4"}]

  • 写回答

1条回答 默认 最新

  • bekote 2021-12-30 11:45
    关注
    
    let datamap = [{alwaysReceive:true,origin:'1',target:'2'},{alwaysReceive:true,origin:'2',target:'5'},{alwaysReceive:false,origin:'3',target:'2'}]
    let source = [{id:'1',v:'2',t:"9"},{id:'2',v:'88',t:"2"},{id:'3',v:'0',t:"4"}]
    var result = [];
      var alwaysReceiveList = []
      datamap.forEach(dmitem=>{
          var tmp = source.find(sitem=>{
              return  dmitem.origin === sitem.id
          });
          if(tmp){
              //用另外一个变量拷贝,不然会改动到source里的值
              var ttmp = Object.assign({}, tmp);
              ttmp.id = dmitem.target;
              if(dmitem.alwaysReceive){
                  alwaysReceiveList.push(ttmp) 
              }
              result.push(ttmp);
          }
      });
      console.log(result,alwaysReceiveList);
     
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月7日
  • 已采纳回答 12月30日
  • 创建了问题 12月30日