无法使用Javascript根据键名合并两个不同的数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用Javascript根据键名合并两个不同的数组相关的知识,希望对你有一定的参考价值。
我正在尝试将每个键值对合并两个对象数组,但给出的结果与预期不符。我在下面用我的代码解释所有文档。
let arr1 = [
"_id": "PU2-TEXT BOOK",
"dispatchcount": 2,
"totalDispatchValue": 5810,
"totalDiscountValue": 150
,
"_id": "PU2-Mathematics Part - 1 Text Book",
"dispatchcount": 1,
"totalDispatchValue": 4131,
"totalDiscountValue": 150
,
"_id": "Boys White & Blue Striped Half Shirt",
"dispatchcount": 1,
"totalDispatchValue": 4131,
"totalDiscountValue": 150
]
let arr2 = [
"_id": "PU2-TEXT BOOK",
"pendingcount": 2,
"totalPendingValue": 14157,
"totalPendingDiscountValue": 1518
,
"_id": "PU2-Accountancy Part - 2 Text Book",
"pendingcount": 1,
"totalPendingValue": 9002,
"totalPendingDiscountValue": 834
]
let arr3 = arr1.map((item, i) => Object.assign(, item, arr2[i]));
console.log(arr3);
这里,如果找到任何匹配项,则需要根据键arr1 and arr2
值合并两个_id
,然后如果从第二个数组中找不到则两个对象都将合并,那么原始值将保持不变。我的预期输出如下。
预期输出::
[
"_id": "PU2-TEXT BOOK" ,
"dispatchcount": 2 ,
"totalDispatchValue": 5810 ,
"totalDiscountValue": 150 ,
"pendingcount": 2 ,
"totalPendingValue": 14157 ,
"totalPendingDiscountValue": 1518
,
"_id": "PU2-Mathematics Part - 1 Text Book",
"dispatchcount": 1,
"totalDispatchValue": 4131,
"totalDiscountValue": 150,
"pendingcount": 0 ,
"totalPendingValue": 0 ,
"totalPendingDiscountValue": 0
,
"_id": "Boys White & Blue Striped Half Shirt",
"dispatchcount": 1,
"totalDispatchValue": 4131,
"totalDiscountValue": 150,
"pendingcount": 0 ,
"totalPendingValue": 0 ,
"totalPendingDiscountValue": 0
,
"_id": "PU2-Accountancy Part - 2 Text Book",
"pendingcount": 1,
"totalPendingValue": 9002,
"totalPendingDiscountValue": 834,
"dispatchcount": 0 ,
"totalDispatchValue": 0 ,
"totalDiscountValue": 0
]
所以我想按_id
键合并两个对象数组。如果某些对象与其匹配,则两个对象将合并,如果第二个对象中不存在第一个数组中的对象,反之亦然,则对于不存在的那些键,它将与值0合并。
我正在尝试将每个键值对合并两个对象数组,但给出的结果与预期不符。我在下面用我的代码解释所有文档。让arr1 = [“ _id” ...
答案
您可以将一个对象用作默认值,并使用相同的_id
将属性扩展到该对象。
另一答案
您可以组合数组arr1
和arr2
,然后在其上组合reduce
。找到匹配的索引(如果存在),然后合并两个对象:
另一答案
您可以将一个对象用作默认值,并使用相同的_id
将其值分配给该对象。
以上是关于无法使用Javascript根据键名合并两个不同的数组的主要内容,如果未能解决你的问题,请参考以下文章
php 二维数组中取某个唯一的键值为键名。(通过合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组的元素为键值。)