javascript - 根据其最新日期过滤数组响应中的单个值
问题描述
我有两个数组 a 和 b
我想根据最新的数组将数组的remarks
and附加到数组中。delivery_status
a
b
created_date_time
a
po_number
应该用作比较参数。因为它是两个数组中的公共字段
这该怎么做?
a=[{
actual_delivery_date: "2020-10-22"
created_date_time: "2020-10-24T22:18:29Z"
delivery_status: "Delivered"
id: 16
po_number: 1125
remarks: "test"
user: "pruser5"
},
{
actual_delivery_date: "2020-10-22"
created_date_time: "2020-10-24T22:18:29Z"
delivery_status: "Delivered"
id: 16
po_number: 1124
remarks: "test1"
user: "pruser5"
},
{
actual_delivery_date: "2020-10-29",
created_date_time: "2020-10-24T23:02:05Z",
delivery_status: "Late",
id: 22,
po_number: 1125,
remarks: "asd",
user: "pruser7"
}]
b= [{
po_num: 1125,
priority: "Medium",
processId: "30820307",
},
{
po_num: 1124,
priority: "Large",
processId: "30820308",
}]
我想要的输出,
b= [{
po_num: 1125,
priority: "Medium",
processId: "30820307",
delivery_status: "Delivered",
remarks: "test"
},
{
po_num: 1124,
priority: "Large",
processId: "30820308",
delivery_status: "Late",
remarks: "asd"
}]
解决方案
所以听起来你只想将 A 的部分附加到 B 如果首先,它们具有相同的po_number
,然后你只想附加最新的created_date_time
。
一种方法是:
created_date_time
在(最晚日期优先)之前订购 A- 循环通过 B
- 对于 B 中的每一项,使用
find
A 上的方法获取与当前 B 条目具有相同 po_number 的条目 - 从A中找到的item中拉出
delivery_status
andremarks
,添加到当前B条目中
代码:
a.sort((x, y) => y.created_date_time.localeCompare(x.created_date_time));
for (const bEntry of b) {
const matchedEntryA = a.find(aEntry => bEntry.po_num === aEntry.po_number);
if (matchedEntryA) {
bEntry.delivery_status = matchedEntryA.delivery_status;
bEntry.remarks = matchedEntryA.remarks;
}
}
值得注意的是,在您预期的输出示例中, b with po_num: 1125
has remarks: test_1
,这不是 A 中最新created_date_time
为 1125 的条目。我相信它应该是remarks: asd
。
如果您确实希望此代码得到您预期的答案,请将我的第一行代码更改为:(a.sort((x, y) => x.created_date_time.localeCompare(y.created_date_time));
在 sort compareFunction 返回中切换 y 和 x)
还值得注意的是,如果您希望 A 非常长,则可能有更有效的方法可以通过跳过排序步骤并使用不同的数据结构来做到这一点。
希望这有帮助!
推荐阅读
- memory-leaks - RxJS:在 takeUntil 之后使用重复创建订阅泄漏
- angular - 如何使用 karma jasmine 对依赖于另一个函数的函数进行单元测试
- php - Cookie 不会设置,没有结果
- python - 在 python 中读取德语 csv 文件的问题
- opencv - 来自应用程序的 OpenCv + Gstreamer,初始延迟 30 秒
- amazon-web-services - 确保在 AWS S3 同步期间数据不会丢失
- php - 如何通过 agi php 写入文件?
- php - 明智地显示或隐藏内容用户角色
- python - 获取数组中最大元素的数组索引号的最佳方法
- flutter - 方法在 StreamBuilder 中被调用两次,其中包含 Flutter 中的自定义对话框