![](/img/trans.png)
[英]How to combine two array of objects of different sizes, based on a property in Javascript?
[英]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.