![](/img/trans.png)
[英]How to merge or append the array of objects to another array of object in JavaScript
[英]How to merge array of object and another array of objects
我有两个数组,数组 2 将是合并数组 1 。 我正在使用 concat,但找不到任何解决方案。
这是数组 1 :
let array1 = [{
label: "OA deal activities",
content: [{
label: "Create OA deals",
},
{
label: "Update OA deal",
},
{
label: "OA deals",
},
]
}]
这是对象的数组 2:
let array2 = [
{
label: "OA deal request",
content: [{
label: 'OA Deal request List',
},
{
label: "View oadeal request",
},
{
label: "Update OA deal request",
},
]
}
]
我想将 array2 内容属性与数组 1 内容相匹配。 我的输出将是这种格式
[{
label: "OA deal activities",
content: [{
label: "Create OA deals",
},
{
label: "Update OA deal",
},
{
label: "OA deals",
},{
label: 'OA Deal request List',
},
{
label: "View oadeal request",
},
{
label: "Update OA deal request",
},
]
}]
我正在使用 concat javascript 方法,但找不到完美的解决方案。
let data = array1[0].content.concat(array2[0].content)
似乎array1[0].content = array1[0].content.concat(array2[0].content)
应该工作
但对于 ES6 你也可以这样做
array1[0].content = [...array1[0].content, ...array2[0].content]
如果数组 1 和数组 2 中有多个项目,您也可以这样做(只要它们的长度匹配)
array1.forEach(function(a, i){a.content = a.content.concat(array2[i].content)
ES6版本:
array1.forEach((a, i) => {a.content = [...a.content, ...array2[i].content]})
const mergedArray = [...array1[0].content, ...array2[0].content]
array1[0].content = mergedArray
console.log({label: array1[0].label, content : [...array1[0].content, ...array2[1].content]})
let array1 = [ { label: "OA deal activities", content: [ { label: "Create OA deals" }, { label: "Update OA deal" }, { label: "OA deals" } ] } ]; let array2 = [ { label: "Deposit", content: [{ label: "Deposits" }, { label: "Deposit approval" }] }, { label: "OA deal activities", content: [ { label: "OA Deal request List" }, { label: "View oadeal request" }, { label: "Update OA deal request" } ] } ]; console.log({ label: array1[0].label, content: [...array1[0].content, ...array2[1].content] }); // For complex array of array const flatten = (arr, depth = 1) => arr.reduce( (a, v) => a.concat(depth > 1 && Array.isArray(v) ? flatten(v, depth - 1) : v), [] ); const result2 = { ...array1[0], content: flatten( array1.map(x => x.content).concat(array2.map(x => x.content)) ) }; console.log(JSON.stringify(result2, null, 2));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.