javascript - 如何过滤嵌套数组(组成JS过滤器)
问题描述
我试图返回一个根据对象的子属性过滤的新数组。
我正在尝试将两个过滤器嵌套在一起以实现此结果。
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"
}]
}];
如何在哪里过滤原始数组status === 'Y'
?
解决方案
您可以先映射以获取具有过滤子项的等效数组,然后过滤主数组以删除没有子项的元素。
let result = data.map(item => {
return {
header: item.header,
items: item.items.filter(subItem => subItem.status === 'Y')
};
}).filter(item => item.items.length);
推荐阅读
- c# - 物体旋转太慢
- javascript - Google 表格脚本 - 无法从属于数据透视表的单元格中获取背景颜色
- python - 如何使用具有零长度字段名称的格式将 Python 2.7+ 代码转换为 2.6 样式命名字段?
- git - 列出作为 git 合并冲突解决的一部分的文件,无论更改如何
- perl - 如何对 Data::Printer 的输出进行排序?
- javascript - Sequelize 从响应中删除枢轴数据
- node.js - 如何修复云错误“必须提供 api_key”
- python - 具有不同组的散点图和每组的边缘直方图
- cypher - 如何在 gremlin 查询中使用多个联合步骤?
- php - 在 PHP 中组合数据以插入 SQL 的最佳方法是什么?