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
方法。
添加回答
舉報