Содержимое
определить, испускает ли Observable определённый элемент или нет
Передайте оператору Contains конкретный элемент, и Observable, которое он возвращает, будет испускать true если этот элемент испускается исходным Observable, или false если исходный Observable завершается без испускания этого элемента.
Связанный оператор IsEmpty возвращает Observable, который испускает true тогда и только тогда, когда исходный Observable завершается без испускания каких-либо элементов. Он испускает false если исходный Observable испускает элемент.
См. также
Информация для конкретного языка
RxGroovy contains exists isEmpty
RxGroovy реализует этот оператор как contains. По умолчанию он не работает с каким-либо конкретным Расписанием.
- Javadoc:
contains(Object)
RxGroovy также реализует оператор exists. Он похож на contains, но проверяет элементы, испускаемые исходным Observable, по заданной вами функции-предикату, а не по идентичности с конкретным объектом. Observable, возвращаемое из exists, вернёт true если исходный Observable испустит элемент, удовлетворяющий вашей функции-предикату, и false если он завершится без испускания такого элемента.
По умолчанию он не работает с каким-либо конкретным Расписанием.
- Javadoc:
exists(Func1)
RxGroovy также реализует оператор isEmpty. Observable, возвращаемое из isEmpty, вернёт false если исходный Observable испустит элемент, и true если он завершится без испускания элемента.
По умолчанию он не работает с каким-либо конкретным Расписанием.
- Javadoc:
isEmpty()
RxJava 1․x contains exists isEmpty
RxJava реализует этот оператор как contains. По умолчанию он не работает с каким-либо конкретным Расписанием.
- Javadoc:
contains(Object)
RxJava также реализует оператор exists. Он похож на contains, но проверяет элементы, испускаемые исходным Observable, по заданной вами функции-предикату, а не по идентичности с конкретным объектом. Observable, возвращаемое из exists, вернёт true если исходный Observable испустит элемент, удовлетворяющий вашей функции-предикату, и false если он завершится без испускания такого элемента.
По умолчанию он не работает с каким-либо конкретным Расписанием.
- Javadoc:
exists(Func1)
RxJava также реализует оператор isEmpty. Observable, возвращаемое из isEmpty, вернёт false если исходный Observable испустит элемент, и true если он завершится без испускания элемента.
По умолчанию он не работает с каким-либо конкретным Расписанием.
- Javadoc:
isEmpty()
RxJava 2․x any contains isEmpty
RxJS contains findIndex indexOf isEmpty
Оператор contains в RxJS принимает необязательный второй параметр: индекс (с нуля) в последовательности источника 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.jsrx.all.compat.jsrx.aggregates.js
Для него требуется один из следующих дистрибутивов:
rx.jsrx.compat.jsrx.lite.jsrx.lite.compat.js
Оператор indexOf в RxJS похож на contains, но вместо возвращения Observable, испускающего true или false, он возвращает 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.jsrx.all.compat.jsrx.aggregates.js
Для него требуется один из следующих дистрибутивов:
rx.jsrx.compat.jsrx.lite.jsrx.lite.compat.js
Оператор findIndex в RxJS принимает в качестве параметра функцию-предикат. Он возвращает Observable, который испускает либо одно число — нулевой индекс первого элемента в последовательности исходного Observable, соответствующего предикату, — или −1, если такой элемент не соответствует.
Функция-предикат принимает три параметра:
- элемент, испущенный исходным Observable
- нулевой индекс этого элемента
- исходное Observable
Вы также можете передать объект в 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.jsrx.all.compat.jsrx.aggregates.js
Для него требуется один из следующих дистрибутивов:
rx.jsrx.compat.jsrx.lite.jsrx.lite.compat.js
RxJS также реализует оператор isEmpty. Observable, возвращаемое isEmpty, вернет false, если исходное Observable испустит элемент, и 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.jsrx.all.compat.jsrx.aggregates.js
Для него требуется один из следующих дистрибутивов:
rx.jsrx.compat.jsrx.lite.jsrx.lite.compat.js
RxPHP isEmpty
RxPHP реализует этот оператор как isEmpty.
Если исходное Observable пустое, оно возвращает Observable, испускающее true, в противном случае — 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!
© ReactiveX contributors
Licensed under the Apache License 2.0.
http://reactivex.io/documentation/operators/contains.html