javascript - javascript - 根据数组值获取子数组

我有一个 categories 数组:


{id: 1, catName:"test", subCategories: Array(2)}



我需要基于 categoryid 来检索 subCategories array 。

返回整个 category 对象,如何更改它才能返回 subCategories array?


 const subCategories = categoriesWithSub.filter(category => {


 return category.id === departments.catId;


 });



时间:

Destructure一个 find 调用:


const { subCategories } = categoriesWithSub.find(({ id }) => id === departments.catId);



使用 Array#find 获取对象,并使用点表示法或者括号表示法获取 array 。


const subCategories = (categoriesWithSub.find(category => {


 return category.id === departments.catId;


}) || {}).subCategories;//if find returns undefined then use an empty object to avoid error, alternately you can use if condition



你可以使用 reduce


const subCategories = categoriesWithSub.reduce((acc, category) => {


 if (category.id === departments.catId) {


 return acc.concat(category. subCategories)


 }


 return acc;


}, []);



注意,reduce 是一个非常强大的工具。 findmapforEachfilter 类似于特定任务的reduce的速记版本。

...