Javascript 双筛选器在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

我在过滤JSON数组时遇到了一些问题。这是我想要的代码和结果,所以请帮我过滤一下

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))
控制台日志(全部)