有一个JS数组,数组包含很多对象,每个对象都有children属性,遍历所有节点,返回包含name属性的节点
时间: 2024-12-18 17:30:41 浏览: 4
你可以使用递归的方式来遍历这个JavaScript数组,并找到所有具有`name`属性的对象。这里是一个简单的示例:
```javascript
function findNodesWithName(array) {
let result = [];
function traverse(node) {
if (node.hasOwnProperty('children') && Array.isArray(node.children)) {
node.children.forEach(child => {
if (child.hasOwnProperty('name')) {
result.push(child);
}
traverse(child); // 递归遍历子节点
});
} else if (node.hasOwnProperty('name')) { // 如果当前节点就是你要找的
result.push(node);
}
}
array.forEach(node => traverse(node));
return result;
}
// 使用示例
const nodes = [
{ name: 'A', children: [{ name: 'B' }, { name: 'C' }] },
{ name: 'D', children: [] },
{ children: [{ name: 'E' }] },
];
const nodesWithNames = findNodesWithName(nodes);
console.log(nodewsWithNames); // 输出: [{ name: 'A' }, { name: 'B' }, { name: 'C' }, { name: 'E' }]
```
这个函数会返回一个新数组,其中包含所有有`name`属性的节点。
阅读全文