attachIndex (withIndex)
発行される各値に連番のインデックスを付与し、[index, value] タプルを生成します。
インデックスは 0 から始まり、発行のたびにインクリメントされます。
Marble Diagram
Section titled “Marble Diagram”attachIndex()
// 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'],]);