我有一个像下面这样的数组
[
{
"__typename": "ConfigurableProduct",
"uid": "MzY3",
"name": "AISLING BODYSUIT",
"crosssell_products": [
{
"__typename": "ConfigurableProduct",
"uid": "NTI=",
"name": "Product 1"
},
{
"__typename": "ConfigurableProduct",
"name": "Product 2"
},
{
"__typename": "ConfigurableProduct",
"name": "Product 3"
}
]
},
{
"__typename": "ConfigurableProduct",
"uid": "MzI4",
"name": "CERYS BODYSUIT",
"crosssell_products": [
{
"__typename": "ConfigurableProduct",
"name": "Product 4"
},
{
"__typename": "ConfigurableProduct",
"name": "Product 5"
},
{
"__typename": "ConfigurableProduct",
"name": "Product 6"
}
]
}
]
字符串
我想要的数据是包含crossell_products数组它意味着我想要下面的格式单一数组
"crosssell_products": [
{
"__typename": "ConfigurableProduct",
"uid": "NTI=",
"name": "Product 1"
},
{
"__typename": "ConfigurableProduct",
"name": "Product 2"
},
{
"__typename": "ConfigurableProduct",
"name": "Product 3"
},
{
"__typename": "ConfigurableProduct",
"name": "Product 4"
},
{
"__typename": "ConfigurableProduct",
"name": "Product 5"
},
{
"__typename": "ConfigurableProduct",
"name": "Product 6"
},
]
型
我试过下面的代码,但不工作
let aa = getRelatedData?.products?.items.reduce(function (a, b) {
return a.concat(b);
}, []);
型
4条答案
按热度按时间u5i3ibmn1#
您可以在JavaScript中使用
flatMap()
Operator来完成一个flatten数组。参考官方文档here。
字符串
ux6nzvsh2#
您需要使用
flatMap
。map
将返回数组的数组,因此需要使用flatMap
。字符串
你也可以使用迭代和减少的方法:
型
但是
flatMap
更简洁,更好地说明了意图。型
s1ag04yj3#
尝试
Array.flatMap()
如下字符串
这不会失败,即使
crosssell_products
在数组中不存在或未定义。型
w1e3prcc4#
您可以使用
map
创建一个新数组,该数组仅包含原始数组中每个对象的crosssell_products
数组。然后,concat
将这些数组合并组合成一个数组,并将组合后的数组分配给新对象的crosssell_products
属性。字符串