javascript - 遍历两个对象数组并创建新的数组对象
问题描述
我有以下两个数组对象
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);
解决方案
你可以像这样加入你的两个数组:
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);
推荐阅读
- regex - 删除除我的 RegEx 在记事本 ++ 中匹配的所有内容
- android - Android 接受对话框
- graphql - 当输入对象中的变量设置为未定义或空字符串时,useQuery 不会触发
- sql-server - 我们可以在触发器中同时使用而不是和之后吗?
- simpleitk - 如何解释以下输入到 STAPLE 过滤器对象的执行方法:Execute(const Image & image1)?
- javascript - 按时间和值的数量对数组进行排序和映射
- r - 具有时间序列的 R 代码
- r - CSV 文件输出与“read.csv()”不一致
- sonarqube - SonarQube 的安全扫描依赖项
- java - 在当前工作目录中复制文件不起作用