let arr = [{dad:'a',son:'b'},{dad:'a',son:'c'},{dad:'b',son:'b1'},{dad:'c',son:'c1'}],有一个对象结构为父子关系的对象数组,用js方法获取到a的所有后代
时间: 2023-12-28 12:04:40 浏览: 113
可以使用递归来获取一个对象的所有后代,可以通过遍历数组中的每个对象,找到dad属性等于'a'的对象,然后将该对象的son属性加入结果数组中,再递归该对象的son属性的后代,直到没有后代为止。以下是实现代码:
```javascript
let arr = [{dad:'a',son:'b'},{dad:'a',son:'c'},{dad:'b',son:'b1'},{dad:'c',son:'c1'}];
function getAllDescendants(objArr, dad) {
let descendants = [];
for (let obj of objArr) {
if (obj.dad === dad) {
descendants.push(obj.son);
descendants = descendants.concat(getAllDescendants(objArr, obj.son));
}
}
return descendants;
}
let aDescendants = getAllDescendants(arr, 'a');
console.log(aDescendants); // ['b', 'c']
```
以上代码中,getAllDescendants函数接受一个对象数组和一个父节点名称作为参数,返回该父节点的所有后代。在函数内部,遍历对象数组,当某个对象的dad属性等于传入的父节点名称时,将该对象的son属性加入结果数组中,并递归该对象的son属性的后代,直到没有后代为止。最后,返回结果数组。在主程序中,调用getAllDescendants函数,传入对象数组和父节点名称'a',得到a的所有后代['b', 'c']。
阅读全文