有一个数组对象,它的每一项可能有children属性也可能没有,children中是同样数据结构的数组对象,也可能有chidren属性或没有。
现在的需求是把外层一整个数组对象的id拿到。
基本逻辑是先把id放到新数组里,遇到children项目就把chiddren数组里的拼接到新数组后面,再次执行上面的。
/**
* @description:递归展开具有嵌套结构的数组 展开有chidren的数组对象,将id 添加到一个新的数组里
* @param {[]} 待展开数组
* @return {*} 展开的数组
*/
export function flattenIds(arr) {
let result = [];
arr.forEach((item) => {
result.push(item.id);
if (item.children && item.children.length > 0) {
result = result.concat(flattenIds(item.children));
}
});
return result;
}