- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
13小时前关门了。
Improve this question
我有一个对象数组,它有一个属性("attributes"
)作为对象数组。
var products = [
{
"productId": "1",
"attributes": [
{
"variant":"red",
"price": "134.00"
}
]
},
{
"productId": "2",
"attributes": [
{
"variant": "green",
"value": "3400.00"
},
{
"variant": "pink",
"price": "342.00"
}
]
}
]
我想对象的嵌套数组被展平并复制到父对象上,但父对象需要为每个嵌套对象复制。(不确定我是否解释正确)。
转换后的对象数组应为:
var transformedProducts = [
{
"productId": "1",
"variant":"red",
"price": "134.00"
},
{
"productId": "2",
"variant": "green",
"value": "3400.00"
},
{
"productId": "2",
"variant": "pink",
"price": "342.00"
}
]
我可以Map外层数组,然后再Map内层数组,在最内层的Map中,构造一个新对象。
对此是否有更好或更实用的方法?
4条答案
按热度按时间mqkwyuun1#
可以使用
Array.flatMap()
迭代对象,然后使用Array.map()
迭代attributes
,并与对象的其余部分组合。Array.flatMap()
还可以将数组的数组扁平化为单个数组。在Ramda中,你可以使用
R.chain
迭代和扁平化数组。要获得一个属性数组和它们的父属性组合,你可以使用R.ap
作为两个函数的组合子:1.提取attributes数组,然后将其应用于第二个函数。
1.获取对象的其余部分(不包括属性),并创建将其合并到迭代对象的Map函数。
x一个一个一个一个x一个一个二个x
ars1skjm2#
可以按如下方式使用
Array#map
和Array#flat
:或者,如果存在其他属性,则仅命名为
attributes
:qgelzfjb3#
这段代码应该适合你:
xwbd5t1u4#
在我的例子中,我的数组有对象,在对象中有子数组。我想要一个包含所有子对象的数组
所以我用这个函数把所有对象放到一个数组里
这是我代码
结果: