const data = [ { id: 1, children: [ { id: 2, children: [ { id: 3, children: [ { id: 4 } ] } ], } ] },{ id: 11, children: [ { id: 22, children: [ { id: 33, children: '' } ], } ] } ];拿到所有层最里层的id
时间: 2023-08-18 20:22:56 浏览: 30
可以使用递归来实现拿到多层数组中所有层最里层的id,代码如下:
```javascript
function getInnermostIds(arr) {
const ids = [];
if (Array.isArray(arr)) {
for (let i = 0; i < arr.length; i++) {
const innerIds = getInnermostIds(arr[i].children);
if (innerIds.length > 0) {
ids.push(...innerIds);
} else {
ids.push(arr[i].id);
}
}
} else if (typeof arr === 'object' && arr.hasOwnProperty('id')) {
ids.push(arr.id);
}
return ids;
}
const data = [
{
id: 1,
children: [
{
id: 2,
children: [
{
id: 3,
children: [
{
id: 4
}
]
}
],
}
]
},
{
id: 11,
children: [
{
id: 22,
children: [
{
id: 33,
children: ''
}
],
}
]
}
];
const ids = getInnermostIds(data);
console.log(ids); // [4, 33]
```
这个函数接收一个多层数组作为参数,如果传入的是一个数组,就递归地遍历它的每个元素的children属性,如果元素还有子元素,就继续递归。如果元素不包含子元素,就将它的id添加到ids数组中。如果传入的不是数组或对象中没有id属性,就不进行任何操作。最终返回的是多层数组中所有层最里层的id数组。在这个例子中,最后得到的ids是[4, 33]。