2 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
所以聽起來你只想將 A 的部分附加到 B 上,如果首先,它們具有相同的po_number
,然后你只想附加最新的created_date_time
.
一種方法是:
created_date_time
在(最遲日期在前)之前訂購(gòu) A循環(huán) B
對(duì)于B中的每一項(xiàng),使用
find
A上的方法獲取與當(dāng)前B條目po_number相同的條目從A中找到的item中拉出
delivery_status
andremarks
,添加到當(dāng)前B表項(xiàng)中
代碼:
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;
}
}
值得注意的是,在您預(yù)期的輸出示例中, b with po_num: 1125hasremarks: test_1不是 A 中的條目 with the latest created_date_timefor 1125。我相信它應(yīng)該是remarks: asd。
如果您確實(shí)希望此代碼獲得預(yù)期的答案,請(qǐng)將我的第一行代碼更改為:(a.sort((x, y) => x.created_date_time.localeCompare(y.created_date_time));在排序 compareFunction 返回中切換 y 和 x)
還值得注意的是,如果您希望 A 非常長(zhǎng),則可以通過跳過排序步驟并使用不同的數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)更有效的方法。
希望這有幫助!

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
為您提供提示,以便您可以自己嘗試。
您可以實(shí)例化一個(gè)地圖,然后遍歷 Arraya
以添加po_number
作為鍵和deliver_status
,created_date
并remarks
在對(duì)象中作為值。如果該值已經(jīng)存在,則比較創(chuàng)建日期,如果已添加的日期較小,則替換地圖中的值。然后遍歷 Array to 并從地圖中b
獲取值,將和from 地圖值添加到 Array 的項(xiàng)目。po_num
deliver_status
remarks
b
您可以使用 Array 的reduce
方法迭代 Arraya
并生成地圖。對(duì)于 Array b
,您可以使用 Array 的map
方法。
添加回答
舉報(bào)