Immutable.js:" Flatten"嵌套的地图集合,不会使地图变平

时间:2018-06-01 17:52:35

标签: javascript immutable.js

我有一个bookshelf API,其中的方法可以返回代表书籍的List的排序不可变Maps。反过来,这些书Maps有方法返回其章节的排序不可变Lists,依此类推每章的页面。

我正在尝试编写一个迭代每个嵌套列表的方法展平其项目,并将这些项目按原始顺序连接在一个单一级别的列表中。但是,我无法使用flatten(),因为它会损坏Maps。这就是我提出的,但它看起来并不优雅。

Immutable在其API中是否有能够实现以下目标的东西?

  let sortedCollection = List();
  bookshelf.getSortedBooks().forEach((book) => {
    sortedCollection = sortedCollection.push(book);
    bookshelf.getSortedChapters(book.getId()).forEach((chapter) => {
      sortedCollection = sortedCollection.push(chapter);
      bookshelf.getSortedPages(book.getId(), chapter.getId()).forEach((page) => {
        sortedCollection = sortedCollection.push(page);
      });
    });
  });
  return sortedCollection; // [book1, chapter1, page1, chapter2, page1, page2 ... book2]

0 个答案:

没有答案