如何避免嵌套循环

How to avoid nested loops

我需要用 has 和 repo 构建这个对象。我觉得嵌套这些地图是一种非常糟糕的做法,而且它是流程的失败点。这个应该怎么写?

let observ = observable$.flatMap(repos => {
  return Rx.Observable.from(repos.map(repo => ({hash: getHash(repo), repo})))
})

我没有发现这种方法有任何明显的错误。如果您想简化代码,可以使用 concatMap,它将数组流转换为项目流。然后我们可以做一个法线贴图:

let repo$ = observable$.concatMap(identity);
let observ = repo$.map(repo => ({hash: getHash(repo), repo }));

其中 identity === x => x.

如果您想避免使用 identity.

调用它,您还可以在构建 observable$ 流时在您的链中更早地应用 concatMap