亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據最新日期過濾數組響應中的單個值

根據最新日期過濾數組響應中的單個值

LEATH 2023-06-15 09:35:55
我有兩個數組 a 和 b我想根據最新的數組將數組的remarks和附加到數組。delivery_statusabcreated_date_timeapo_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"    }]
查看完整描述

2 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

所以聽起來你只想將 A 的部分附加到 B 上,如果首先,它們具有相同的po_number,然后你只想附加最新的created_date_time.

一種方法是:

  1. created_date_time在(最遲日期在前)之前訂購 A

  2. 循環 B

  3. 對于B中的每一項,使用findA上的方法獲取與當前B條目po_number相同的條目

  4. 從A中找到的item中拉出delivery_statusand remarks,添加到當前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 非常長,則可以通過跳過排序步驟并使用不同的數據結構來實現更有效的方法。


希望這有幫助!


查看完整回答
反對 回復 2023-06-15
?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

為您提供提示,以便您可以自己嘗試。

您可以實例化一個地圖,然后遍歷 Arraya以添加po_number作為鍵和deliver_status,created_dateremarks在對象中作為值。如果該值已經存在,則比較創建日期,如果已添加的日期較小,則替換地圖中的值。然后遍歷 Array to 并從地圖中b獲取值,將和from 地圖值添加到 Array 的項目。po_numdeliver_statusremarksb

您可以使用 Array 的reduce方法迭代 Arraya并生成地圖。對于 Array b,您可以使用 Array 的map方法。


查看完整回答
反對 回復 2023-06-15
  • 2 回答
  • 0 關注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號