我正在尝试根据一些嵌套对象过滤一个数组。我准备了一些 小提琴
输入数组如下所示:
let arrayOfElements =
[
{
"name": "a",
"subElements":
[
{"surname": 1},
{"surname": 2}
]
},
{
"name": "b",
"subElements":
[
{"surname": 3},
{"surname": 1}
]
},
{
"name": "c",
"subElements":
[
{"surname": 2},
{"surname": 5}
]
}
];
我希望这种情况的输出看起来像这样:
let filteredArray =
[
{
"name": "a",
"subElements":
[
{"surname": 1}
]
},
{
"name": "b",
"subElements":
[
{"surname": 1}
]
}
];
我正在使用这个公式来做到这一点:
let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));
输出几乎是好的,但它返回的对象包含所有带有姓氏的对象(最好检查小提琴 :D),而不是将它们切掉。我怎样才能改进过滤?
原文由 bartosz.baczek 发布,翻译遵循 CC BY-SA 4.0 许可协议
这样你就可以在数组中任意深入,并在任何级别过滤元素,
Spread operator
subElements
扩展element
然后过滤 - 然后过滤 - 然后过滤subElements