javascript - 链接两个对象,值到值,并填充序列中的任何缺失值
问题描述
我正在尝试将两个对象合并到 1 个数组中,并且它们必须通过它们的值链接。对象是“Days”和“Count”,这是一天发生的事件数的计数。
示例数据
{"Day":[3,8,9,17,18,21,25,27,30,31],
"Count":[1,3,1,1,1,4,2,2,2,1]}
我可以用这个功能做到这一点:
var data = {{loanDates.data}}; // this query has two objects, 'Day' and 'Count' which is the sum of the number of events that has happened on each day.
return data.Day.map(function(day, key){
var count = test.Count[key];
return {
day,count
}
});
结果
[{"day":3,"count":1},
{"day":8,"count":3},
{"day":9,"count":1},
{"day":17,"count":1},
{"day":18,"count":1},
{"day":21,"count":4},
{"day":25,"count":2},
{"day":27,"count":2},
{"day":30,"count":2},
{"day":31,"count":1}]
这会返回正确的东西,但是我想要一个月中的所有日子。因此,例如说对象中不存在该月的第 10 天,我需要创建第 10 天并将其计数设置为 0。
需要的结果
[{"day":1,"count":0},
{"day":2,"count":0},
{"day":3,"count":1},
{"day":4,"count":0},
{"day":5,"count":0},
{"day":6,"count":0},
{"day":7,"count":0},
{"day":8,"count":3},
{"day":9,"count":1},
{"day":10,"count":0},
{..................},
{"day":31,"count":0},]
解决方案
用于Array.from()
生成带有 的天数组count: 0
,传播到一个数组,并用具有计数值的天数组覆盖:
const data = {
"Day":[3,8,9,17,18,21,25,27,30,31],
"Count":[1,3,1,1,1,4,2,2,2,1]
}
const result = [
...Array.from({ length: 31 }, (_, i) => ({ day: i + 1, count: 0 })),
...data.Day.map((day, i) => ({ day, count: data.Count[i] }))
]
console.log(result)
推荐阅读
- python - 如何从输出中删除最后一个逗号?
- reactjs - 页面加载时如何在 Redux 中存储数据?
- heroku - Puppeteer 在本地找到选择器,但在 heroku 上没有
- python - 为什么排序记录为采用可迭代而不是集合?
- swiftui - 一些显示/隐藏循环后,形式中的选轮器消失
- php - 可恢复的致命错误:无法将 PDOStatement 类的对象转换为字符串 - 第 23 行的 index.php
- amazon-web-services - 使用 AWS 负载均衡器时的 ERR_SSL_PROTOCOL_ERROR
- python - 仅缩放包含字符串的数据框中的数值
- angular - 如何在Angular中更改fullcalendar的本地属性
- macos - 如何在 SwiftUI 中获取默认按钮颜色?