recursion递归 自存例子

有一个数组对象,它的每一项可能有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;
}

你可能感兴趣的:(javascript,算法,数据结构)