将一个特定的项目传递给 Contains 操作符,它返回的 Observable 将在源 Observable 发出该项目时发出 true
,或者在源 Observable 终止而没有发出该项目时发出 false
。
一个相关的操作符,IsEmpty 返回一个 Observable,当且仅当源 Observable 在没有发出任何项目的情况下完成时,它发出 true
。如果源 Observable 发出一个项目,则它发出 false
。
待定
RxGroovy 将此操作符实现为 contains
。默认情况下,它不会对任何特定的 调度器 进行操作。
contains(Object)
RxGroovy 还实现了 exists
操作符。它类似于 contains
,但它会将源 Observable 发出的项目与您提供的谓词函数进行测试,而不是测试它们与特定对象的同一性。如果源 Observable 发出一个满足谓词函数的项目,则从 exists
返回的 Observable 将返回 true
,如果它在没有发出此类项目的情况下完成,则返回 false
。
默认情况下,它不会对任何特定的 调度器 进行操作。
exists(Func1)
RxGroovy 还实现了 isEmpty
操作符。从 isEmpty
返回的 Observable 将在源 Observable 发出一个项目时返回 false
,如果它在没有发出项目的情况下完成,则返回 true
。
默认情况下,它不会对任何特定的 调度器 进行操作。
isEmpty()
RxJava 将此操作符实现为 contains
。默认情况下,它不会对任何特定的 调度器 进行操作。
contains(Object)
RxJava 还实现了 exists
操作符。它类似于 contains
,但它会将源 Observable 发出的项目与您提供的谓词函数进行测试,而不是测试它们与特定对象的同一性。如果源 Observable 发出一个满足谓词函数的项目,则从 exists
返回的 Observable 将返回 true
,如果它在没有发出此类项目的情况下完成,则返回 false
。
默认情况下,它不会对任何特定的 调度器 进行操作。
exists(Func1)
RxJava 还实现了 isEmpty
操作符。从 isEmpty
返回的 Observable 将在源 Observable 发出一个项目时返回 false
,如果它在没有发出项目的情况下完成,则返回 true
。
默认情况下,它不会对任何特定的 调度器 进行操作。
isEmpty()
RxJS 中的 contains
操作符接受一个可选的第二个参数:一个从零开始的索引,用于在源 Observable 序列中开始搜索项目。
/* Without an index */ var source = Rx.Observable.of(42) .contains(42); var subscription = source.subscribe( function (x) { console.log('Next: %s', x); }, function (err) { console.log('Error: %s', err); }, function () { console.log('Completed'); });
Next: true Completed
/* With an index */ var source = Rx.Observable.of(1,2,3) .contains(2, 1); var subscription = source.subscribe( function (x) { console.log('Next: %s', x); }, function (err) { console.log('Error: %s', err); }, function () { console.log('Completed'); });
Next: true Completed
contains
存在于以下发行版中
rx.all.js
rx.all.compat.js
rx.aggregates.js
它需要以下发行版之一
rx.js
rx.compat.js
rx.lite.js
rx.lite.compat.js
RxJS 中的 indexOf
操作符类似于 contains
,但它不是返回发出 true
或 false
的 Observable,而是返回一个发出源 Observable 序列中项目索引的 Observable,或者在没有发出此类项目的情况下返回 −1
。
indexOf
操作符接受一个可选的第二个参数:一个从零开始的索引,用于在源 Observable 序列中开始搜索项目。结果 Observable 发出的索引值将相对于此起点,而不是相对于序列的开头。
/* Without an index */ var source = Rx.Observable.of(42) .indexOf(42); var subscription = source.subscribe( function (x) { console.log('Next: %s', x); }, function (err) { console.log('Error: %s', err); }, function () { console.log('Completed'); });
Next: 0 Completed
/* With an index */ var source = Rx.Observable.of(1,2,3) .indexOf(2, 1); var subscription = source.subscribe( function (x) { console.log('Next: %s', x); }, function (err) { console.log('Error: %s', err); }, function () { console.log('Completed'); });
Next: 0 Completed
indexOf
存在于以下发行版中
rx.all.js
rx.all.compat.js
rx.aggregates.js
它需要以下发行版之一
rx.js
rx.compat.js
rx.lite.js
rx.lite.compat.js
RxJS 中的 findIndex
操作符以谓词函数作为参数。它返回一个 Observable,该 Observable 或者发出单个数字(源 Observable 序列中第一个匹配谓词的项目的从零开始的索引),或者在没有此类项目匹配的情况下发出 −1
。
谓词函数接受三个参数
您还可以将一个对象传递给 findIndex
作为可选的第二个参数,该对象将作为“this
”提供给谓词函数。
/* Found an element */ var array = [1,2,3,4]; var source = Rx.Observable.fromArray(array) .findIndex(function (x, i, obs) { return x === 1; }); var subscription = source.subscribe( function (x) { console.log('Next: ' + x); }, function (err) { console.log('Error: ' + err); }, function () { console.log('Completed'); });
Next: 0 Completed
/* Not found */ var array = [1,2,3,4]; var source = Rx.Observable.fromArray(array) .findIndex(function (x, i, obs) { return x === 5; }); var subscription = source.subscribe( function (x) { console.log('Next: ' + x); }, function (err) { console.log('Error: ' + err); }, function () { console.log('Completed'); });
Next: -1 Completed
findIndex
存在于以下发行版中
rx.all.js
rx.all.compat.js
rx.aggregates.js
它需要以下发行版之一
rx.js
rx.compat.js
rx.lite.js
rx.lite.compat.js
RxJS 还实现了 isEmpty
操作符。从 isEmpty
返回的 Observable 将在源 Observable 发出一个项目时返回 false
,如果它在没有发出项目的情况下完成,则返回 true
。
/* Not empty */ var source = Rx.Observable.range(0, 5) .isEmpty() var subscription = source.subscribe( function (x) { console.log('Next: ' + x); }, function (err) { console.log('Error: ' + err); }, function () { console.log('Completed'); });
Next: false Completed
/* Empty */ var source = Rx.Observable.empty() .isEmpty() var subscription = source.subscribe( function (x) { console.log('Next: ' + x); }, function (err) { console.log('Error: ' + err); }, function () { console.log('Completed'); });
Next: true Completed
isEmpty
存在于以下发行版中
rx.all.js
rx.all.compat.js
rx.aggregates.js
它需要以下发行版之一
rx.js
rx.compat.js
rx.lite.js
rx.lite.compat.js
RxPHP 将此操作符实现为 isEmpty
。
如果源 Observable 为空,它将返回一个发出 true
的 Observable,否则它将发出 false
。
//from https://github.com/ReactiveX/RxPHP/blob/master/demo/isEmpty/isEmpty.php $source = \Rx\Observable::emptyObservable() ->isEmpty(); $source->subscribe($stdoutObserver);
Next value: 1 Complete!
//from https://github.com/ReactiveX/RxPHP/blob/master/demo/isEmpty/isEmpty-false.php $source = \Rx\Observable::just(1) ->isEmpty(); $source->subscribe($stdoutObserver);
Next value: 0 Complete!