我有以下两个对象数组。我想要更新array1元素以反映匹配transid的array2元素。因此,我的结果应该是一个新的数组,其中包含已更新为反映array2中值的两个元素,或者是具有更新值的相同array1。
使用一些现代语法,什么是最好的方法?我打开几个选项,以便进行比较。例如,我猜测可以用array2对象替换array1中匹配的对象,或者通过对元素进行迭代来更新array1对象中的单个元素。
使用一些现代语法,什么是最好的方法?我打开几个选项,以便进行比较。例如,我猜测可以用array2对象替换array1中匹配的对象,或者通过对元素进行迭代来更新array1对象中的单个元素。
var arra1 = [{
"_id" : ObjectId("583f6e6d14c8042dd7c979e6"),
"transid" : 1,
"acct" : "acct1",
"transdate" : ISODate("2012-01-31T05:00:00.000Z"),
"category" : "category1",
"amount" : 103
}, {
"_id" : ObjectId("583f6e6d14c8042dd7c2132t6"),
"transid" : 2,
"acct" : "acct2",
"transdate" : ISODate("2012-01-31T05:00:00.000Z"),
"category" : "category2",
"amount" : 103
}]
var arra2 = [{
"_id" : ObjectId("583f6e6d14c8042dd7c979e6"),
"transid" : 1,
"acct" : "acct2",
"transdate" : ISODate("2012-01-31T05:00:00.000Z"),
"category" : "category5",
"amount" : 107
}, {
"_id" : ObjectId("583f6e6d14c8042dd7c2132t6"),
"transid" : 2,
"acct" : "acct2",
"transdate" : ISODate("2012-01-31T05:00:00.000Z"),
"category" : "category2",
"amount" : 103
}, {
"_id" : ObjectId("583f6e6d14c8042dd7c2132t6"),
"transid" : 3,
"acct" : "acct2",
"transdate" : ISODate("2016-07-31T05:00:00.000Z"),
"category" : "category3",
"amount" : 103
}]
我已经尝试过一些操作,目前大致有以下结果。虽然还没有成功,但这就是我想要的逻辑。
arr1.forEach(item =>
if (arr2.indexOf(item.transid) != -1){
item.category = arr2.indexOf(item.transid).category
}
)