如何解决根据内部数组长度查找嵌套数组
我目前正在使用嵌套数组的数组,并尝试拉出某些满足条件(长度大于1)的数组。这是数组-
const testArr = [
{
"type": 1,"categories": [
{
"description": "Foo","subOptions": [
{
"subType": 1,"subTypeTypeDescription": "Bar"
}
],}
]
},{
"type": 2,"categories": [
{
"description": "Baz","subOptions": [
{
"subType": 2,"subTypeTypeDescription": "Baf"
},{
"subType": 3,"subTypeTypeDescription": "Bee"
}
],}
]
}
]
我希望产生的是一个类别数组,但前提是这些类别必须具有一个长度大于1的subOptions数组。这是上面数组期望的结果-
[
{
"description": "Baz","subOptions": [
{
"subType": 2,"subTypeTypeDescription": "Baf"
},{
"subType": 3,"subTypeTypeDescription": "Bee"
}
],}
]
我可以通过使用普通的foreach循环使它正常工作-
let categories: [];
testArr.forEach((service) => {
service.categories.forEach((cat) => {
if(cat.subOptions.length > 1) {
categories.push(cat)
}
})
})
但是我正在尝试学习如何使用功能性工具来做这些事情。我现在已经尝试过多次使用地图,过滤器以及减少和保持失败的混合方式来执行此操作。如果有人可以提供使用功能方法完成相同事情的最佳方法的指导,我将不胜感激。
解决方法
使用.filter
检查子数组的长度:
const testArr=[{type:1,categories:[{description:"Foo",subOptions:[{subType:1,subTypeTypeDescription:"Bar"}]}]},{type:2,categories:[{description:"Baz",subOptions:[{subType:2,subTypeTypeDescription:"Baf"},{subType:3,subTypeTypeDescription:"Bee"}]}]}];
const result = testArr
.flatMap(item => item.categories)
.filter(({ subOptions }) => subOptions.length >= 2);
console.log(result);
,
尝试一下
const categories = testArr.map(service => {
return service.categories.filter(category => category.subOptions.length > 1);
})
或者甚至一行:
const categories = testArr.map(service => service.categories.filter(category => category.subOptions.length > 1));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。