根据 Angular 中提供的日期生成响应

问题描述 投票:0回答:1

我有一个 JSON 响应。

响应 JSON:

[
  {
    "price": 388,
    "created_date": "2019-07-30T17:01:38",
    "created_user": "PQR"
  },
  {
    "price": 511,
    "created_date": "2021-02-25T19:19:55",
    "created_user": "ABCD"
  },
  {
    "price": 592,
    "created_date": "2021-09-07T08:10:41",
    "created_user": "ABCD"
  },
  {
    "price": 622,
    "created_date": "2022-01-17T15:37:41",
    "created_user": "ABCD"
  },
  {
    "price": 672,
    "created_date": "2022-02-06T13:34:35",
    "created_user": "PQR"
  },
  {
    "price": 640,
    "created_date": "2024-05-08T15:51:02",
    "created_user": "ABCD"
  }
]

输入通过日期:

输入密码日期=“2023-05-11T00:00:00”

当我传递“InputPassdate”时,它会在响应中搜索更大的日期值,并生成新的响应,其中包括带有“created_date”的先前对象数据:下面输出中的“InputPassdate”日期。

预期输出:

[
  {
    "price": 672,
    "created_date": "2023-05-11T00:00:00",
    "created_user": "PQR"
  },
  {
    "price": 640,
    "created_date": "2024-05-08T15:51:02",
    "created_user": "ABCD"
  }
]
javascript angular angular8 angular13 angular17
1个回答
0
投票

首先我们使用

findIndex
获取索引,然后如果索引大于零,我们取前一个元素,将日期更新为所需日期,最后将其添加到输出的第一个元素,然后我们使用
slice
指定找到的索引作为起始索引,获取所有值并推送它!

const data = [{
    "price": 388,
    "created_date": "2019-07-30T17:01:38",
    "created_user": "PQR"
  },
  {
    "price": 511,
    "created_date": "2021-02-25T19:19:55",
    "created_user": "ABCD"
  },
  {
    "price": 592,
    "created_date": "2021-09-07T08:10:41",
    "created_user": "ABCD"
  },
  {
    "price": 622,
    "created_date": "2022-01-17T15:37:41",
    "created_user": "ABCD"
  },
  {
    "price": 672,
    "created_date": "2022-02-06T13:34:35",
    "created_user": "PQR"
  },
  {
    "price": 640,
    "created_date": "2024-05-08T15:51:02",
    "created_user": "ABCD"
  }
]
// Input Pass Date:
const inputPassdate = "2023-05-11T00:00:00"
// find the source Index
const foundIndex = data.findIndex((item) => new Date(item.created_date) > new Date(inputPassdate));
let newData = null;
const mergedData = [];
// if index not -1 or zero update the previous element
if (foundIndex > 0) {
  newData = { ...data[foundIndex - 1]
  };
  newData.created_date = inputPassdate;
  mergedData.push(newData);
}
mergedData.push(...structuredClone(data.slice(foundIndex)));

console.log('mergedData', mergedData)

© www.soinside.com 2019 - 2024. All rights reserved.