一起使用map和switchMap

时间:2018-09-21 18:47:50

标签: javascript rxjs operators

我有一个可观察对象,其中包含普通字段和其他可观察对象。我想获取包含此字段的序列以及相应的可观察触发值以及内部可观察值。

例如:

var smth$ = interval(1000).pipe(
  take(3),
  map(i => ({
    id: String.fromCharCode('A'.charCodeAt(0) + i),
    value$: interval(300).pipe(
      take(10),
      map(j => i*10 + j)
    )
  }))
)

我可以通过id轻松获得map字段的序列:

smth$.pipe(
  map(x => x.id)
)

ids by <code>map</code>

我也可以通过value获得switchMap的序列:

smth$.pipe(
  switchMap(x => x.value$)
)

values by <code>switchMap</code>

但是如何获得idvalue的一对配对序列?

desired sequence

可运行的示例:https://rxviz.com/v/R85xKw6J

2 个答案:

答案 0 :(得分:4)

您可以尝试

smth$.pipe(
    switchMap(x => x.value$.pipe(
        map(d => x.id + d)
    ))
)

答案 1 :(得分:3)

平面解决方案:https://rxviz.com/v/j8ArKWEo

$command = mysqli_real_escape_string($con,$_POST['command']); /// hello
$dialogue_unlock .= ',\''. $discuss_row['discussion_text'].'\''; /// 'Hello','Goodbye'
$dialogue_unlock = explode(',', $dialogue_unlock); /// dialogue_unlock to array


foreach ($dialogue_unlock as $a) {
    if (strpos($command, $a) !== FALSE) { 
        echo "Match found"; 
    }
   else
    {
        echo "Not found!";
    }
}