我有两个数组a和b
我想基于数组remarks
的最新delivery_status
,将数组a
的{{1}}和b
附加到数组created_date_time
。 / p>
a
应该用作比较参数。因为这是两个数组中的公共字段
该怎么做?
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",
}]
答案 0 :(得分:1)
因此,听起来好像您只想将A的一部分附加到B上,前提是它们具有相同的created_date_time
,然后只想将最新的created_date_time
附加到A。
一种方法是:
find
(最新日期在前)的订单A delivery_status
方法以获取与当前B条目具有相同po_number的条目remarks
和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条目中代码:
po_num: 1125
值得注意的是,在您的预期输出示例中,带有remarks: test_1
的b具有created_date_time
,这不是A中带有最新remarks: asd
的1125。我认为应该改为a.sort((x, y) => x.created_date_time.localeCompare(y.created_date_time));
。
如果您确实希望此代码获得预期的答案,请将我的第一行代码更改为:"ClientDataRepositoryConfiguration": {
"CollectionName": "ClientData",
"ConnectionString": "mongodb://localhost:C2y6yDjf5%2FR%2Bob0N8A7Cgv30VRDJIWEHLM%2B4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw%2FJw%3D%3D@localhost:10255/admin?ssl=true",
"DatabaseName": "ClientData"
},
(将sortFunction中的y和x切换为return)
还值得注意的是,如果您期望A真的很长,则可能有更有效的方法来跳过排序步骤并使用其他数据结构来实现此目的。
希望这对您有所帮助!
答案 1 :(得分:0)
为您提供提示,以便您可以尝试一下。
您可以实例化地图,然后在数组a
上循环以将po_number
作为键,并将deliver_status
,created_date
和remarks
添加到对象中作为值。如果该值已经存在,则比较创建的日期,如果已添加的日期较少,则替换地图中的值。然后在数组b
上循环到并从映射中获取po_num
的值,将映射值中的deliver_status
和remarks
添加到数组b
的项中。
您可以使用Array的reduce
方法遍历Array a
并生成映射。对于数组b
,可以使用数组的map
方法。