コンテンツにスキップ

attachIndex (withIndex)

発行される各値に連番のインデックスを付与し、[index, value] タプルを生成します。 インデックスは 0 から始まり、発行のたびにインクリメントされます。

Timeline of observable eventsABC
attachIndex()
Timeline of observable events0,A1,B2,C
// Timeline:
//
// letter$ "A" "B" "C"
// indexed$ [0,"A"] [1,"B"] [2,"C"]
//
// Explanation:
// - attachIndex attaches a sequential index to each emitted value
// - Produces [index, value] tuples
// - Index starts at 0 and increments with each emission
const letter$ = source<string>();
const indexed$ = letter$.pipe(attachIndex());
const valueHistory: (readonly [number, string])[] = [];
indexed$.subscribe(([i, letter]) => {
valueHistory.push([i, letter]);
});
letter$.next('A');
assert.deepStrictEqual(valueHistory, [[0, 'A']]);
letter$.next('B');
assert.deepStrictEqual(valueHistory, [
[0, 'A'],
[1, 'B'],
]);
letter$.next('C');
assert.deepStrictEqual(valueHistory, [
[0, 'A'],
[1, 'B'],
[2, 'C'],
]);

View source on GitHub