Javascript 双筛选器在JSON数组中不起作用
我在过滤JSON数组时遇到了一些问题。这是我想要的代码和结果,所以请帮我过滤一下Javascript 双筛选器在JSON数组中不起作用,javascript,arrays,json,Javascript,Arrays,Json,我在过滤JSON数组时遇到了一些问题。这是我想要的代码和结果,所以请帮我过滤一下 var all = [ { data : "test1", dataArray : [ { name : "abc", status : true, address: "test" }, { name : "xyz", status : false, address: "tes
var all = [
{
data : "test1",
dataArray : [
{
name : "abc",
status : true,
address: "test"
}, {
name : "xyz",
status : false,
address: "test"
}, {
name : "pqr",
status : true,
address: "test"
},
]
},
{
data : "test2",
dataArray : [
{
name : "abc",
status : true,
address: "test"
}, {
name : "xyz",
status : false,
address: "test"
}, {
name : "pqr",
status : false,
address: "test"
},
]
},
{
data : "test3",
dataArray : [
{
name : "abc",
status : false,
}, {
name : "xyz",
status : false,
}, {
name : "pqr",
status : true,
},
]
}
]
console.log(JSON.stringify(all.filter((a)=>a.dataArray.filter((b)=>b.status==true)),null,2));
想要这样的结果:只有状态为true的数据,但我不知道为什么过滤器会返回所有JSON数据。嵌套过滤器是否存在任何问题
a = [
{
data : "test1",
dataArray : [
{
status : true,
address: "test"
},{
status : true,
address: "test"
},
]
},
{
data : "test2",
dataArray : [
{
status : true,
address: "test"
},
]
},
{
data : "test3",
dataArray : [
{
status : true,
address: "test"
}, {
status : true,
address: "test"
}
]
}
]
我使用了嵌套过滤器,但它不起作用。我怎样才能得到结果 您需要将
过滤器
应用于数据数组
,而不是全部
all.forEach( s => s.dataArray = s.dataArray.filter( t => t.status ) )
注意
- 此解决方案会对
数组进行变异,因此如果您不想变异,请先创建all
的深度副本all
var all=[{
数据:“test1”,
数据阵列:[{
名称:“abc”,
状态:正确,
地址:“测试”
}, {
名称:“xyz”,
状态:false,
地址:“测试”
}, {
名称:“pqr”,
状态:正确,
地址:“测试”
}, ]
},
{
数据:“test2”,
数据阵列:[{
名称:“abc”,
状态:正确,
地址:“测试”
}, {
名称:“xyz”,
状态:false,
地址:“测试”
}, {
名称:“pqr”,
状态:false,
地址:“测试”
}, ]
},
{
数据:“test3”,
数据阵列:[{
名称:“abc”,
状态:false,
}, {
名称:“xyz”,
状态:false,
}, {
名称:“pqr”,
状态:正确,
}, ]
}
];
all.forEach(s=>s.dataArray=s.dataArray.filter(t=>t.status))
控制台日志(全部)代码>