首页 > 解决方案 > 遍历两个对象数组并创建新的数组对象

问题描述

我有以下两个数组对象

const plan = [
              {Item_ID : 01, Date:"2020-04-01", Items:"10"}, 
              {Item_ID : 02, Date:"2020-04-01", Items:"20"},
              {Item_ID : 03, Date:"2020-04-02", Items:"40"},
              {Item_ID : 05, Date:"2020-04-03", Items:"10"},
             ];

const actual = [{Date:"2020-04-01", Actual_Items:"15"}, 
                {Date:"2020-04-02", Actual_Items:"40"}, 
                {Date:"2020-04-05", Actual_Items:"50"},                    
               ];

这两个数组显示了计划销售额和实际销售额,基于这两个数组我试图创建下面的数组

 const plan = [
              {Item_ID : 01, Date:"2020-04-01", Items:"10", Actual_Items:"15"}, 
              {Item_ID : 02, Date:"2020-04-01", Items:"20", Actual_Items:"15"},
              {Item_ID : 03, Date:"2020-04-02", Items:"40", Actual_Items:"40"},
              {Item_ID : 05, Date:"2020-04-03", Items:"10", Actual_Items:"0"},
              {Item_ID : null, Date:"2020-04-04", Items:"0", Actual_Items:"0"},
              {Item_ID : null, Date:"2020-04-05", Items:"0", Actual_Items:"50"},
             ];

因此,如果这些是当天完成的实际销售,则基于计划数组,否则我们将显示 0。如果没有计划但销售已完成,则 Item_ID 将为 null 项目将为 null 但 Actual_Items 需要显示销售数量。

我创建了波纹管地图功能可能完全错误的逻辑,我无法继续未来,知道如何创建这个最终数组

let op = plan.map((e,i)=>{
      let temp = actual.find(element=> element.Date === e.Date)
      if(temp.Actual_Items) {
        e.Actual_Items= temp.Actual_Items;
      }
      return e;
    })
    console.log(op);

标签: javascriptjqueryarraysobject

解决方案


你可以像这样加入你的两个数组:

let op = plan.concat(actual);

或者

let op = [...plan, ...actual];

但在您可能想要迭代“实际”以修改值“Item_ID”和“Items”之前。

解决方案如下:

const plan = [
              {Item_ID : 01, Date:"2020-04-01", Items:"10"}, 
              {Item_ID : 02, Date:"2020-04-01", Items:"20"},
              {Item_ID : 03, Date:"2020-04-02", Items:"40"},
              {Item_ID : 05, Date:"2020-04-03", Items:"10"},
             ];

const actual = [{Date:"2020-04-01", Actual_Items:"15"}, 
                {Date:"2020-04-02", Actual_Items:"40"}, 
                {Date:"2020-04-05", Actual_Items:"50"},                    
               ];

actual.forEach(function(part, index) {
  part.Items = "0";
  part.Item_ID = null;
  this[index] = part;
}, actual);

let op = plan.concat(actual);

console.log(op);


推荐阅读