我有一个这样的数组:
[
{
"id": 1,
"name": "Vehicle",
"subCategories": [
{
"subCategoryId": 1,
"subCategoryName": "Car"
}
]
},
{
"id": 2,
"name": "Delivery",
"subCategories": [
{
"subCategoryId": 1,
"subCategoryName": "Furniture"
}
]
},
{
"id": 3,
"name": "Home Services",
"subCategories": [
{
"subCategoryId": 1,
"subCategoryName": "Lawn Mowing"
}
]
}
]
我想从一个名为 subcategories 的数组中获取所有类别的所有子类别。
我尝试过 map、reduce、concat 等,但似乎无法获得所需的结果。
您可以使用解构从每个对象中提取 subCategories
数组,然后使用 .flatMap
将其展平为一个数组,如下所示:
const arr = [{id:1,name:"Vehicle",subCategories:[{subCategoryId:1,subCategoryName:"Car"}]},{id:2,name:"Delivery",subCategories:[{subCategoryId:1,subCategoryName:"Furniture"}]},{id:3,name:"Home Services",subCategories:[{subCategoryId:1,subCategoryName:"Lawn Mowing"}]}];
const subcategories = arr.flatMap(({subCategories}) => subCategories);
console.log(subcategories);
如果你想要一些更兼容浏览器的东西,你可以通过将每个 subCategories
数组的内容分散到一个累积数组中,在你的初始数组上使用 .reduce()
:
const arr = [{id:1,name:"Vehicle",subCategories:[{subCategoryId:1,subCategoryName:"Car"}]},{id:2,name:"Delivery",subCategories:[{subCategoryId:1,subCategoryName:"Furniture"}]},{id:3,name:"Home Services",subCategories:[{subCategoryId:1,subCategoryName:"Lawn Mowing"}]}];
const subcategories = arr.reduce((res, {subCategories}) => [...res, ...subCategories], []);
console.log(subcategories);