基于传入日期在Angular中筛选并生成JSON响应的实现
Angular数据处理实现方案
步骤1:定义数据类型
先为数据条目定义TypeScript接口,保证类型安全:
interface PriceRecord { price: number; created_date: string; created_user: string; }
步骤2:实现核心处理逻辑
创建一个处理函数,接收原始数据和输入日期,返回处理后的结果:
processPriceRecords(originalData: PriceRecord[], inputPassdate: string): PriceRecord[] { const inputDate = new Date(inputPassdate); // 筛选出created_date大于输入日期的条目 const recordsAfterInputDate = originalData.filter(record => new Date(record.created_date) > inputDate ); // 筛选出所有created_date小于输入日期的条目,取最后一个 const recordsBeforeInputDate = originalData.filter(record => new Date(record.created_date) < inputDate ); let lastBeforeRecord: PriceRecord | undefined; if (recordsBeforeInputDate.length > 0) { // 复制原对象并修改日期,避免污染原始数据 lastBeforeRecord = { ...recordsBeforeInputDate[recordsBeforeInputDate.length - 1], created_date: inputPassdate }; } // 合并结果:如果有最后一条前置记录,就放在前面,再加上后置记录 const result: PriceRecord[] = []; if (lastBeforeRecord) { result.push(lastBeforeRecord); } result.push(...recordsAfterInputDate); return result; }
步骤3:调用示例
在组件或服务中调用该函数:
// 原始数据 const originalData: PriceRecord[] = [ {"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"} ]; // 输入日期参数 const inputPassdate = "2023-05-11T00:00:00"; // 执行处理 const processedData = this.processPriceRecords(originalData, inputPassdate); console.log(processedData);
输出结果
执行后得到的结果与预期一致:
[ { "price": 672, "created_date": "2023-05-11T00:00:00", "created_user": "PQR" }, { "price": 640, "created_date": "2024-05-08T15:51:02", "created_user": "ABCD" } ]
注意事项
- 使用对象展开运算符
...复制原始条目,避免直接修改原数据导致的副作用。 - 日期比较时统一转换为
Date对象,确保字符串格式的日期比较准确。 - 处理边界情况:如果没有任何条目小于输入日期,结果仅包含大于输入日期的条目;如果没有大于的条目,结果仅包含修改后的最后一条前置条目。
内容的提问来源于stack exchange,提问作者Er. IT
相关产品推荐
相关产品推荐

