Javascript 通过嵌套数组进行筛选

Javascript 通过嵌套数组进行筛选,javascript,arrays,filtering,Javascript,Arrays,Filtering,我有一个对象数组,其中一些键包含一个新数组 现在,我想返回所有具有特定值的对象,或者属性中的嵌套数组包含特定值 数组看起来像这样: const test = [ { test: 1, key: [{ yes: true, no: null }] }, { test: null, key: [{ yes: true, no: null }] }, { test: null, key: [{ yes: null, n

我有一个对象数组,其中一些键包含一个新数组

现在,我想返回所有具有特定值的对象,或者属性中的嵌套数组包含特定值

数组看起来像这样:

const test = [
{
  test: 1,
  key: [{
    yes: true,
    no: null
  }]
}, 
{
  test: null,
  key: [{
    yes: true,
    no: null
  }]
}, 
{
  test: null,
  key: [{
    yes: null,
    no: null
  }]
}];
不幸的是,我想出的解决方案是:

const filtered=test.filter(obj=>obj.test | | obj.key.filter(item=>item.yes))

因此,实际上,只应返回前两个对象,但它会返回所有三个对象

这里缺少什么?

您需要获取,因为它返回的是一个布尔值,而不是一个数组,即使数组为空,也是一个值

const
test=[{test:1,key:[{yes:true,no:null}]},{test:null,key:[{yes:true,no:null}]},{test:null,key:[{yes:null,no:null}]},
filtered=test.filter(obj=>obj.test | | obj.key.some(item=>item.yes));
console.log(过滤)
.as console wrapper{max height:100%!important;top:0;}
您需要获取一个值,因为它返回的是一个布尔值,而不是一个数组,即使数组为空,也是一个值

const
test=[{test:1,key:[{yes:true,no:null}]},{test:null,key:[{yes:true,no:null}]},{test:null,key:[{yes:null,no:null}]},
filtered=test.filter(obj=>obj.test | | obj.key.some(item=>item.yes));
console.log(过滤)

。作为控制台包装{max height:100%!important;top:0;}
您几乎把它带回家了。使用
obj.key.some
obj.filter().length>0
Array.prototype.filter
将始终返回一个数组。当没有与谓词匹配的项时,它将为空(
.length==0

const测试=[{
测试:1,
关键:[{
是的,没错,
否:空
}]
},
{
测试:空,
关键:[{
是的,没错,
否:空
}]
},
{
测试:空,
关键:[{
是:空,
否:空
}]
}
];
const filtered=test.filter(obj=>obj.test | | obj.key.filter(item=>item.yes).length>0)

console.log(过滤)
您差点把它带回家。使用
obj.key.some
obj.filter().length>0
Array.prototype.filter
将始终返回一个数组。当没有与谓词匹配的项时,它将为空(
.length==0

const测试=[{
测试:1,
关键:[{
是的,没错,
否:空
}]
},
{
测试:空,
关键:[{
是的,没错,
否:空
}]
},
{
测试:空,
关键:[{
是:空,
否:空
}]
}
];
const filtered=test.filter(obj=>obj.test | | obj.key.filter(item=>item.yes).length>0)

console.log(已筛选)
.filter
返回一个数组;数组总是正确的。@melpomene谢谢您的回复!但是在这种情况下,如何筛选这个嵌套数组?
。filter
返回一个数组;数组总是正确的。@melpomene谢谢您的回复!但是,在这种情况下,如何筛选嵌套数组呢?谢谢,这就解决了问题!很高兴将来能知道这一点!谢谢,这个问题解决了!很高兴将来能知道这一点!