根据某种条件将值附加到对象数组中吗?

问题描述

我有一个这样的对象数组

[
  {
    "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","createdAt": "2020-08-14T02:55:43.988Z","hashId": "5"
  }
]

我有一个数组,其中包含月-年的列表

let datesArr = ['2020-08','2020-07','2020-06','2020-05','2020-04','2020-03','2020-02','2020-01','2019-12']

现在,我要从原始数组中删除那些date (on dateYear key)与dateArr中指定的任何日期都不匹配的项目。

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,现在dateArr中不存在此日期,因此应从monthlyData数组中删除此元素,但是在monthlyData数组中则删除与dateArr不匹配应将数据密钥插入为空

每个hashId可以存储很多个月的数据,因此,为什么monthlyData是一个数组。

解决方法

使用过滤器和一些方法

const arr = [{
    "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": "20222-08","data": [{
        "id": "38fe3c68-e6aa-4c57-b4d7-dc6c4f597269","date": "2020-08-13T00:00:00.000Z","transactionId": "146","createdAt": "2020-08-14T02:55:43.988Z","hashId": "5"
  }
]

let datesArr = ['2020-08','2020-07','2020-06','2020-05','2020-04','2020-03','2020-02','2020-01','2019-12'];


let result = arr.filter(x => x["monthlyData"].some(y => !datesArr.some(z => z === y.dateYear)))
console.log(result)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...