如何解决将两个对象值与值链接起来,并填充序列中的所有缺失值
我试图将两个对象合并到1个数组中,并且必须通过它们的值链接它们。对象是“天”和“计数”,这是一天中发生的事件数的计数。
示例数据
{"Day":[3,8,9,17,18,21,25,27,30,31],"Count":[1,3,1,4,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,{"day":17,{"day":18,{"day":21,"count":4},{"day":25,"count":2},{"day":27,{"day":30,{"day":31,"count":1}]
这返回正确的东西,但是我想要一个月的所有日子。例如,假设对象中不存在该月的第10天,则需要创建第10天并将其计数设置为0。
需要结果
[{"day":1,"count":0},{"day":2,{"day":3,{"day":4,{"day":5,{"day":6,{"day":7,{"day":10,{..................},]
解决方法
我要创建一个对象,将每天从输入数据映射到其Count,然后如果它还没有键,请给它键1-31。之后,您可以使用Object.entries
将每个条目映射到数组中的值:
const input = {
"Day":[3,8,9,17,18,21,25,27,30,31],"Count":[1,3,1,4,2,1]
};
const countsByDay = {};
input.Day.forEach((day,i) => {
countsByDay[day] = input.Count[i];
});
for (let i = 0; i <= 31; i++) {
countsByDay[i] = countsByDay[i] || 0;
}
const output = Object.entries(countsByDay).map(
([day,count]) => ({ day,count })
);
console.log(output);
,
使用Array.from()
和count: 0
生成一个天数数组,传播到一个数组中,并用具有计数值的天数数组覆盖:
const data = {
"Day":[3,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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。