碎片时间学编程「142]:将相互链接的对象递归嵌套在平面数组中


  • 使用递归。
  • 使用Array.prototype.filter()过滤id匹配的项目。
  • 使用Array.prototype.map()将每个项目映射到一个新对象,该对象具有一个children基于哪些项目是当前项目的子项目递归嵌套项目的属性。
  • 省略第二个参数 ,id默认值为null表示对象未链接到另一个对象(即它是顶级对象)。
  • 省略第三个参数 ,link用作'parent_id'默认属性,通过它的 id 将对象链接到另一个对象。

JavaScript

const nest = (items, id = null, link = 'parent_id') =>
  items
    .filter(item => item[link] === id)
    .map(item => ({ ...item, children: nest(items, item.id, link) }));

示例:

const comments = [
  { id: 1, parent_id: null },
  { id: 2, parent_id: 1 },
  { id: 3, parent_id: 1 },
  { id: 4, parent_id: 2 },
  { id: 5, parent_id: 4 }
];
const nestedComments = nest(comments);
// [{ id: 1, parent_id: null, children: [...] }]

更多内容请访问我的网站:https://www.icoderoad.com



发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章