[英]Angular typescript how to flatten nested array to find only object with certain condition
我有以下数组对象。 我想展平数组以仅获取名称包含“Martin”的对象
源数组:
[
{
"id": 302,
"name": "David Martin",
"subordinates": [
{
"id": 265,
"name": "Martin Regan",
},
{
"id": 300,
"name": "William Baker",
},
{
"id": 301,
"name": "Anthony Mazzarino",
"subordinates": [
{
"id": 11245,
"name": "Martin Lozano",
}
]
}
]
},
{
"id": 10441,
"name": "Martin Delage De Luget"
}
]
预期结果:
[
{
"id": 302,
"userGuid": "66d6fd24-0e22-4384-9181-f72c4e81cefd",
"name": "David Martin"
},
{
"id": 265,
"name": "Martin Regan",
},
{
"id": 11245,
"name": "Martin Lozano",
}
]
在这些情况下,递归总是一个简单的解决方案:
flatElements = (array, keyword) => {
// Recursive function
const traverse = (subArray, acc = []) => {
subArray.forEach(element => {
const {id, name, subordinates} = element;
// If object with certain condition push it in the resulting acc
if (element.name.contains(keyword)) {
acc.push({id, name});
}
// If subordinates exist, traverse them deeply
if (subordinates) {
traverse(subordinates, acc);
}
});
// Return accumulator
return acc;
}
return traverse(array, []);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.