Rxjs 获取单个可见光发射的阵列的交点

Rxjs 获取单个可见光发射的阵列的交点,rxjs,observable,Rxjs,Observable,我需要转换这个可观测的物体,这样它就能发射出这3个阵列的交点 最简单的方法是什么 let observable = Observable.from([[ 'a' , 'b' , 'c' ],[ 'b', 'c' ],[ 'd' , 'c' , 'b' ]]); 应该被淘汰 observable .intersection() // Expected operator .subscribe( letter => console.log( letter )); 或 可以将

我需要转换这个可观测的物体,这样它就能发射出这3个阵列的交点

最简单的方法是什么

let observable = Observable.from([[ 'a' , 'b' , 'c' ],[ 'b', 'c' ],[ 'd' , 'c' , 'b' ]]);
应该被淘汰

observable
    .intersection() // Expected operator
    .subscribe( letter =>  console.log( letter ));


可以将交点算法的使用与

算法(归功于)

这里需要注意的一点是,这只适用于排序数组,但可以修改它以适合所有用途。您还必须对其进行修改,以使用对象相等性检查,但我想这会让您了解如何执行此操作

b
c 
c
b
function intersection_destructive(a, b) {
  a.sort(); <--- ADDED
  b.sort(); <--- ADDED
  var result = [];
  while (a.length > 0 && b.length > 0) {
    if (a[0] < b[0]) {
      a.shift();
    } else if (a[0] > b[0]) {
      b.shift();
    } else /* they're equal */ {
      result.push(a.shift());
      b.shift();
    }
  }
  return result;
}
source
  .reduce((a, b) => intersection_destructive(a, b))
  .subscribe((res) => {
    console.log(res);
  });