You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于传入日期在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:30:13