将嵌套对象合并到一层

阿姆斯

我在飞镖上有以下课程

class PostComment {
  int id;
  int title;
  int parentCommentId;
  List<PostComment> replies;
}

我从 api 收到的数据在单个数组中返回所有评论(无论在什么级别)。parentCommentId 用于指向回复的父级。要将这些数据转换为嵌套结构,我会这样做

void toNestedComments({List<PostComment> comments}) {
  comments.forEach((postComment) {
    if (postComment.parentCommentId != null) {
      PostComment parentComment = comments.firstWhere((comment) => comment.id == postComment.parentCommentId, orElse: () => null);
      parentComment.replies.add(postComment);
    }
  });

  comments.removeWhere((c) => c.parentCommentId != null);
}

使用此代码,我得到以下结构中的注释数组。

Post 1
    - Post 11
    - Post 12
        - Post 121
        - Post 122
    - Post 13
Post 2
    - Post 21
        - Post 211   

但是 UI 要求数据如下所示。

Post 1
    - Post 11
    - Post 12
    - Post 121
    - Post 122
    - Post 13
Post 2
    - Post 21
    - Post 211  

您建议对上述功能进行什么样的修改以实现上述结构?

当前代码和数据结构位于https://dartpad.dartlang.org/6231828b3ea9dc1e956e87353394dae7

julemand101

我不完全确定您的数据结构,但我想您可以执行以下操作:

像这样扩展 PostComment 类:

class PostComment {
  int id;
  int title;
  int parentCommentId;
  List<PostComment> replies = [];

  Iterable<PostComment> thisAndNestedReplies() sync* {
    yield this;
    for (var reply in replies) {
      yield* reply.thisAndNestedReplies();
    }
  }
}

然后您可以执行以下操作(我仍然使用您的方法来获取嵌套数据结构):

toNestedComments(comments: comments);
var newList = comments
    .where((postComment) => postComment.parentCommentId == null)
    .expand((postComment) => postComment.thisAndNestedReplies()).toList();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Linq将嵌套对象合并到一个列表中

来自分类Dev

如何将文本对象命令应用到上一层?

来自分类Dev

如何编写Visio宏以将形状从一层移动到另一层?

来自分类Dev

cocos2d:将CCSprite从一层绘制到另一层

来自分类Dev

QGIS将粘贴点从一层复制到另一层

来自分类Dev

缩进嵌套字典每一层的内容

来自分类Dev

将嵌套对象字段合并到MongoDB Aggregation中的单个嵌套数组字段中

来自分类Dev

仅将数组展平到一层?

来自分类Dev

将UIButton分组为一层并水平居中

来自分类Dev

将地图上的点限制为一层

来自分类Dev

Docker:将Docker层合并到映像中

来自分类Dev

将结果合并到JSON对象中

来自分类Dev

将Json数组合并到对象

来自分类Dev

如何将两个嵌套的MySQL查询合并到一个视图中?

来自分类Dev

如何将多个对象合并到jQuery / javascript中的一个对象

来自分类Dev

如何将多个对象合并到jQuery / javascript中的一个对象

来自分类Dev

如何将多个对象合并到jQuery / javascript中的一个对象

来自分类Dev

Praat将两层组合成一层

来自分类Dev

OpenLayers 3:将一层设置为灰度,而不更改其他层

来自分类Dev

如何在TensorFlow中同时将一层并行传递到两层中

来自分类Dev

将几个对象的值合并到一个字典中

来自分类Dev

如何将键数组和值数组合并到一个对象中?

来自分类Dev

将全局环境中的R对象合并到一个列表中

来自分类Dev

将多个列表合并到流中的一个对象列表?

来自分类Dev

使用带有参数的JQ将多个json文件合并到一个对象中

来自分类Dev

是否可以将 2 个查找结果合并到 mongodb 中的一个对象中?

来自分类Dev

XSLT - XML 到 HTML 的转换 - 从一层元素创建嵌套的 <div>

来自分类Dev

Nuxt 动态嵌套路由只有一层使用 nuxt-child

来自分类Dev

如何将哈希合并到嵌套数组中?

Related 相关文章

  1. 1

    使用Linq将嵌套对象合并到一个列表中

  2. 2

    如何将文本对象命令应用到上一层?

  3. 3

    如何编写Visio宏以将形状从一层移动到另一层?

  4. 4

    cocos2d:将CCSprite从一层绘制到另一层

  5. 5

    QGIS将粘贴点从一层复制到另一层

  6. 6

    缩进嵌套字典每一层的内容

  7. 7

    将嵌套对象字段合并到MongoDB Aggregation中的单个嵌套数组字段中

  8. 8

    仅将数组展平到一层?

  9. 9

    将UIButton分组为一层并水平居中

  10. 10

    将地图上的点限制为一层

  11. 11

    Docker:将Docker层合并到映像中

  12. 12

    将结果合并到JSON对象中

  13. 13

    将Json数组合并到对象

  14. 14

    如何将两个嵌套的MySQL查询合并到一个视图中?

  15. 15

    如何将多个对象合并到jQuery / javascript中的一个对象

  16. 16

    如何将多个对象合并到jQuery / javascript中的一个对象

  17. 17

    如何将多个对象合并到jQuery / javascript中的一个对象

  18. 18

    Praat将两层组合成一层

  19. 19

    OpenLayers 3:将一层设置为灰度,而不更改其他层

  20. 20

    如何在TensorFlow中同时将一层并行传递到两层中

  21. 21

    将几个对象的值合并到一个字典中

  22. 22

    如何将键数组和值数组合并到一个对象中?

  23. 23

    将全局环境中的R对象合并到一个列表中

  24. 24

    将多个列表合并到流中的一个对象列表?

  25. 25

    使用带有参数的JQ将多个json文件合并到一个对象中

  26. 26

    是否可以将 2 个查找结果合并到 mongodb 中的一个对象中?

  27. 27

    XSLT - XML 到 HTML 的转换 - 从一层元素创建嵌套的 <div>

  28. 28

    Nuxt 动态嵌套路由只有一层使用 nuxt-child

  29. 29

    如何将哈希合并到嵌套数组中?

热门标签

归档