Home Manual Reference Source Test Repository

es6/operator/findIndex.js

import { FindValueOperator } from './find';
/**
 * 只发出源 Observable 所发出的值中第一个满足条件的值的索引。
 *
 * <span class="informal">它很像 {@link find} , 但发出的是找到的值的索引,
 * 而不是值本身。</span>
 *
 * <img src="./img/findIndex.png" width="100%">
 *
 * `findIndex` 会查找源 Observable 中与 `predicate` 函数体现的指定条件匹配的第一项,然后
 * 返回其索引(从0开始)。不同于 {@link first},在 `findIndex` 中 `predicate` 是必须的,而且如果没找到
 * 有效的值的话也不会发出错误。
 *
 * @example <caption>找到并发出第一个点击 DIV 元素的事件的索引</caption>
 * var clicks = Rx.Observable.fromEvent(document, 'click');
 * var result = clicks.findIndex(ev => ev.target.tagName === 'DIV');
 * result.subscribe(x => console.log(x));
 *
 * @see {@link filter}
 * @see {@link find}
 * @see {@link first}
 * @see {@link take}
 *
 * @param {function(value: T, index: number, source: Observable<T>): boolean} predicate
 * 使用每项来调用的函数,用于测试是否符合条件。
 * @param {any} [thisArg] 可选参数,用来决定 `predicate` 函数中的 `this` 的值。
 * @return {Observable<T>} 符合条件的第一项的索引的 Observable 。
 * @method find
 * @owner Observable
 */
export function findIndex(predicate, thisArg) {
    return this.lift(new FindValueOperator(predicate, this, true, thisArg));
}
//# sourceMappingURL=findIndex.js.map