【发布时间】:2020-12-04 05:45:27
【问题描述】:
我有一个这样的对象数组
[
{
"monthlyData": [
{
"dateYear": "2020-07",
"data": [
{
"id": "45bf4792-c5a5-44ed-b7e8-57557c4f30ee",
"date": "2020-07-13T00:00:00.000Z",
"transactionId": "160",
"amount": 70,
"active": 1,
"createdAt": "2020-07-14T02:55:43.988Z",
"updatedAt": "2020-08-14T02:55:43.988Z",
"version": 1
}
]
}
],
"hashId": "4"
},
{
"monthlyData": [
{
"dateYear": "2020-08",
"data": [
{
"id": "38fe3c68-e6aa-4c57-b4d7-dc6c4f597269",
"date": "2020-08-13T00:00:00.000Z",
"transactionId": "146",
"active": 1,
"createdAt": "2020-08-14T02:55:43.988Z",
"updatedAt": "2020-08-14T02:55:43.988Z",
"version": 1
}
]
}
],
"hashId": "5"
}
]
我有一个包含月份列表的数组
let datesArr = ['2020-08','2020-07','2020-06','2020-05','2020-04','2020-04','2020-03','2020-02','2020-01','2019-12']
现在我正在从原始数组中删除那些 date (on dateYear key) 与 datesArr 中指定的任何日期不匹配的项目。
let filtered = mainArray.filter(value => {
value.monthlyData = value.monthlyData.filter(md => {
return datesArr.includes(md.dateYear);
})
return value.monthlyData.length > 0;
})
现在例如,对于原始数组的一个元素,如果原始数组元素的日期与任何日期都不匹配,那么我想将这些日期插入原始数组元素中,数据键为空。
编辑:
假设我在monthlyData 数组中只有一个元素为 2018-07 并且 hashId 平行于 7 现在该日期在 datesArr 中不存在,因此应从monthlyData 数组中删除该元素,但monthlyData 数组中的日期确实与 datesArr 不匹配应插入到monthlyData 中,数据键为空
每个 hashId 可以有很多个月的数据,这就是为什么monthlyData 是一个数组。
【问题讨论】:
-
为什么你的“monthlyData”是一个数组?它应该只是一个对象
-
“现在举例”:如果这是一个例子,你能说明一下一般规则吗?如果一个原始日期不匹配,但另一个原始日期确实匹配,您是否还希望添加日期?或者如果原始日期都匹配,但没有“覆盖”所有可能的日期怎么办? ...等
-
您应该更多地突出您的问题。如您所见,已经发布了两个答案,这错过了您真正要求的内容。
-
假设我在monthlyData 数组中只有一个元素为2018-07 并且hashId 平行于7 现在这个日期在datesArr 中不存在所以这个元素应该从monthlyData 数组中删除,但是monthlyData 数组中的日期与 datesArr 不匹配应插入到monthlyData 中,数据键为空
-
这确实不能回答monthlyData数组有多个条目的情况。请参阅我描述的场景。请根据您的期望回答每个问题。
标签: javascript node.js arrays lodash