首页 > 解决方案 > 链接两个对象,值到值,并填充序列中的任何缺失值

问题描述

我正在尝试将两个对象合并到 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},]

标签: javascriptarraysobjectjavascript-objects

解决方案


用于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)


推荐阅读