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

循环内过滤对象失效:如何按日期匹配证据与评估?

问题分析

你的代码问题在于,只是把所有符合日期条件的evidence直接推入evidencesPerAssessment数组,最终得到的是所有匹配项的平级列表,并没有将它们与对应的assessment关联起来,这就导致结果无法体现“每个assessment仅关联其范围内evidence”的需求。

解决方案

要实现每个assessment绑定其对应范围内的evidence,你需要遍历每个assessment,为其筛选出匹配的evidence后,将两者关联起来(比如给assessment添加一个evidences属性,或者生成包含两者的新对象)。

代码实现

let evidences = [
    { id: 'ev1', name: 'evidence 1', uploadDate: new Date('2023-04-28') },
    { id: 'ev2', name: 'evidence 2', uploadDate: new Date('2023-05-02') },
];

let assessments = [
    { id: 'ca1', name: 'assessment 1', startDate: new Date('2023-04-25'), endDate: new Date('2023-05-01') },
    { id: 'ca2', name: 'assessment 2', startDate: new Date('2023-05-02'), endDate: new Date('2023-05-08') },
];

// 生成每个assessment附带其匹配evidences的数组
let evidencesPerAssessment = assessments.map(assessment => {
    // 筛选当前assessment日期范围内的evidence
    const matchedEvidences = evidences.filter(evidence => {
        // 用getTime()转换为时间戳比较,避免时区差异导致的错误
        const uploadTime = evidence.uploadDate.getTime();
        const startTime = assessment.startDate.getTime();
        const endTime = assessment.endDate.getTime();
        return uploadTime >= startTime && uploadTime <= endTime;
    });
    
    // 返回包含原assessment属性和匹配evidences的新对象
    return {
        ...assessment,
        evidences: matchedEvidences
    };
});

console.log(evidencesPerAssessment);

结果说明

运行上述代码后,evidencesPerAssessment的结构如下:

[
    {
        id: 'ca1',
        name: 'assessment 1',
        startDate: Date('2023-04-25'),
        endDate: Date('2023-05-01'),
        evidences: [{ id: 'ev1', name: 'evidence 1', uploadDate: Date('2023-04-28') }]
    },
    {
        id: 'ca2',
        name: 'assessment 2',
        startDate: Date('2023-05-02'),
        endDate: Date('2023-05-08'),
        evidences: [{ id: 'ev2', name: 'evidence 2', uploadDate: Date('2023-05-02') }]
    }
]

完全符合你期望的“每个assessment仅关联其日期范围内evidence”的需求。

内容的提问来源于stack exchange,提问作者kkkjjj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:35:04