簡體   English   中英

如何合並對象數組和另一個對象數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM