2 回答
TA贡献1864条经验 获得超6个赞
所以听起来你只想将 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: 1125hasremarks: test_1不是 A 中的条目 with the latest created_date_timefor 1125。我相信它应该是remarks: asd。
如果您确实希望此代码获得预期的答案,请将我的第一行代码更改为:(a.sort((x, y) => x.created_date_time.localeCompare(y.created_date_time));在排序 compareFunction 返回中切换 y 和 x)
还值得注意的是,如果您希望 A 非常长,则可以通过跳过排序步骤并使用不同的数据结构来实现更有效的方法。
希望这有帮助!
TA贡献1784条经验 获得超2个赞
为您提供提示,以便您可以自己尝试。
您可以实例化一个地图,然后遍历 Arraya
以添加po_number
作为键和deliver_status
,created_date
并remarks
在对象中作为值。如果该值已经存在,则比较创建日期,如果已添加的日期较小,则替换地图中的值。然后遍历 Array to 并从地图中b
获取值,将和from 地图值添加到 Array 的项目。po_num
deliver_status
remarks
b
您可以使用 Array 的reduce
方法迭代 Arraya
并生成地图。对于 Array b
,您可以使用 Array 的map
方法。
添加回答
举报