根据最新日期过滤数组响应中的单个值

我有两个数组 a 和 b


我想根据最新的数组将数组的remarks和附加到数组。delivery_statusabcreated_date_timea


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"

    }]


LEATH
浏览 93回答 2
2回答

慕尼黑的夜晚无繁华

所以听起来你只想将 A 的部分附加到 B 上,如果首先,它们具有相同的po_number,然后你只想附加最新的created_date_time.一种方法是:created_date_time在(最迟日期在前)之前订购 A循环 B对于B中的每一项,使用findA上的方法获取与当前B条目po_number相同的条目从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 非常长,则可以通过跳过排序步骤并使用不同的数据结构来实现更有效的方法。希望这有帮助!

一只斗牛犬

为您提供提示,以便您可以自己尝试。您可以实例化一个地图,然后遍历 Arraya以添加po_number作为键和deliver_status,created_date并remarks在对象中作为值。如果该值已经存在,则比较创建日期,如果已添加的日期较小,则替换地图中的值。然后遍历 Array to 并从地图中b获取值,将和from 地图值添加到 Array 的项目。po_numdeliver_statusremarksb您可以使用 Array 的reduce方法迭代 Arraya并生成地图。对于 Array b,您可以使用 Array 的map方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript