繁体   English   中英

组合数组中的不同对象

[英]Combine different Objects in Array

我有以下数据:

[
    [
        {
            "name": "color",
            "value": "red",
            "id": "colorID"
        },
        {
            "altText": "",
            "uri": "someURL",
            "id": "someID",
            "localFile": {
                "childImageSharp": {
                    "fluid": {
                        "fluidData": "someString",
                        "fluidData2": 1.567
                    }
                }
            }
        }
    ]
]

我正在尝试将其合并到一个 Object 中,其中两者的所有属性都应该存在。 “localfile”可以保持嵌套,因为我不需要将它展平或任何东西,只要可能的话,所有东西都放在一个 object 中。

我通过执行以下操作获取当前数据结构:

  const variants = post.variations.nodes.map(function (variantItem) { return [variantItem.attributes.nodes[0], variantItem.featuredImage.node] });

我尝试将它们与 Object.assign() 结合使用,并使用扩展运算符。 我发现了其他一些片段,但只有在两个对象共享相同的键时才有效。

我认为这应该很简单,但我一直在摸索它太久了。 任何输入将不胜感激。

这很简单

{...a[0][0], ...a[0][1]}

其中a是对象数组的数组。 这会将两个对象分散为一个。

您可以在使用Array.prototype.reduce()平外部数组之后使用Array.prototype.flat() ,如下所示:

 const arr = [ [ { "name": "color", "value": "red", "id": "colorID" }, { "altText": "", "uri": "someURL", "id": "someID", "localFile": { "childImageSharp": { "fluid": { "fluidData": "someString", "fluidData2": 1.567 } } } } ] ] const obj = arr.flat().reduce((acc, curr) => { return {...acc, ...curr } }, {}); console.log(obj);

使用destructuring...运算符。

 const getObject = ([[first, second]]) => ({...first, ...second}); const data = [ [ { "name": "color", "value": "red", "id": "colorID" }, { "altText": "", "uri": "someURL", "id": "someID", "localFile": { "childImageSharp": { "fluid": { "fluidData": "someString", "fluidData2": 1.567 } } } } ] ] console.log(getObject(data));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM