猿问

如何过滤嵌套数组(组成 JS 过滤器)

A am 试图返回一个根据对象的子属性过滤的新数组。


我试图将两个过滤器嵌套在一起以实现此结果。


let header = "xyz";


let data = [{

  "header": header,

  items: [{

    id: 1,

    status: "Y"

  }, {

    id: 2,

    status: "N"

  }, {

    id: 3,

    status: "N"

  }]

},{

  "header": header,

  items: [{

    id: 1,

    status: "N"

  }, {

    id: 2,

    status: "Y"

  }]

}];


let result = data.filter(item => {

  return item.items.filter(item => {

    return item.status === "Y";

  })

});

预期输出


[{

  "header": header,

  items: [{

    id: 1,

    status: "Y"

  }]

},{

  "header": header,

  items: [{

    id: 2,

    status: "Y"

  }]

}];

如何过滤原始数组 where status === 'Y'?


泛舟湖上清波郎朗
浏览 390回答 2
2回答

白衣染霜花

您可以先映射以获得具有过滤子项的等效数组,然后过滤主数组以删除没有子项的元素。let result = data.map(item => {    return {        header: item.header,        items: item.items.filter(subItem => subItem.status === 'Y')    };}).filter(item => item.items.length);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答