【发布时间】:2015-07-09 18:01:08
【问题描述】:
我有一个有趣的问题。也许有人知道我如何实现像http://ramdajs.com/docs/#xprod 这样的方法。我找到了一个解决方案:
let as = [1, 2, 3];
let bs = ['a', 'b', 'c'];
Rx.Observable.for(bs, b => {
return Rx.Observable.for(as, a => Rx.Observable.just([a, b]));
}).toArray().subscribe(x => {
console.log(x.sort((a, b) => a[0] - b[0]));
});
【问题讨论】:
-
那么,您的解决方案有效吗?如果是,您的问题是什么?
-
我需要一个更好的解决方案。现在我应该将所有数据累积到一个序列中并在订阅中排序。但我认为存在另一种方法。
-
等等,如果你想要转置的顺序,只需在那些
.for循环中交换as和bs? -
哦!也许我今天累了。不看小事。是的,可能你是对的 =)
let as = [1, 2, 3]; let bs = ['a', 'b', 'c']; Rx.Observable.for(as, b => { return Rx.Observable.for(bs, a => Rx.Observable.just([b, a])); })./*toArray().*/subscribe(x => { console.log(x/*.sort((a, b) => a[0] - b[0])*/); }); -
FWIW:虽然你知道我是 Rx 的 巨大 支持者,但如果你已经拥有这些数组(你必须这样做),直接使用数组执行此操作可能更有效/性能更高,然后将结果转换为 Observable。
标签: reactive-programming rxjs bacon.js