Javascript 如何从嵌套数组中筛选对象
我尝试从数组中过滤出孔对象objB,该数组与属性的值titleB2匹配Javascript 如何从嵌套数组中筛选对象,javascript,arrays,Javascript,Arrays,我尝试从数组中过滤出孔对象objB,该数组与属性的值titleB2匹配 const array = [ { name: 'objA', subArray: [] }, { name: 'objB', subArray: [ { title: 'titleB' }, { title: 'titleB2' }, { title: 'titleB3' } ]
const array = [
{
name: 'objA',
subArray: []
}, {
name: 'objB',
subArray: [
{
title: 'titleB'
}, {
title: 'titleB2'
}, {
title: 'titleB3'
}
]
}, {
name: 'objC',
subArray: [
{
title: 'titleC'
}, {
title: 'titleC2'
}, {
title: 'titleC3'
}
]
}, {
name: 'objD',
subArray: []
}
]
const filterArray = array.filter(a => a.subArray.length > 0);
console.log(filterArray);
// Output: objB + objC
const resArray = filterArray.filter(a => a.subArray.filter(f => f.title === 'titleB2'));
console.log(resArray);
// Output: objB + objC
我想,我做了一些逻辑错误的事情。但究竟是什么呢
我需要输出
{
name: 'objB',
subArray: [
{
title: 'titleB'
}, {
title: 'titleB2'
}, {
title: 'titleB3'
}
]
}
我可以想象我使用了filterArray.filter错误,因为它已经被过滤了?但我这样做是因为我在一个数组中有多个数组。老实说,我不是很确定
但我不明白的是,为什么我可以使用条件a=>a.subArray.length>0?但不是f=>f.title=='titleB2'来查找子数组中具有特定标题的对象,您可以在子数组中使用,如果子数组中的某个项目与您的条件匹配,则返回true。在这种情况下,标题: 常量数组=[{name:'objA',子数组:[]},{name:'objB',子数组:[{title:'titleB'},{title:'titleB2'},{title:'titleB3'}]},{name:'objC',子数组:[{title:'titleC'},{title:'titleC2'},{title:'titleC3'},{name:'objD',子数组:[]] 让found=array.filteritem=>item.subArray.somesub=>sub.title==='titleB2' console.logfound在子阵列上使用一些而不是过滤器。它返回一个布尔值 const resArray=array.filtera=>a.subArray.somef=>f.title==='titleB2'; 控制台.logresArray; //输出:objB+objC 常量数组=[ { 名称:“objA”, 子阵列:[] }, { 名称:“objB”, 子阵列:[ { 标题:“标题” }, { 标题:“标题2” }, { 标题:“标题3” } ] }, { 名称:“objC”, 子阵列:[ { 标题:“标题” }, { 标题:“标题2” }, { 标题:“标题3” } ] }, { 名称:“objD”, 子阵列:[] } ]
哇,好的,谢谢,这帮我把事情弄清楚了。非常感谢谢谢你!这真的帮助了我,我不需要感谢人民@Equalizer-这就是投票和选择正确答案的目的。我知道,但我必须:谢谢你的反馈!声誉低于15的人所投的票将被记录,但不会改变公开显示的帖子分数。这就是我提到这一点的原因,所以你知道我真的很感激: