zip (Iterator)
複数のイテレータを、タプルからなる 1 つのイテレータに遅延的に結合します。
typescript
const pairs = zip(source1, source2);使用法
zip(...sources)
複数のシーケンスを足並みをそろえて走査したいときに zip を使用してください。たとえば、インデックスと値、名前とスコアをペアにする場合などです。対応する位置の要素がタプルにまとめられ、最も短い ソースが尽きた時点でイテレーションが停止します。(配列版の zip のように最も長いソースに合わせて埋めるのではなく)最も短いソースで停止するからこそ、有限のイテレータと無限のイテレータを安全に組み合わせられます。イテレーションが終了すると — ソースが尽きた場合でも、消費側が早期に停止した場合でも — すべてのソースが return メソッドを通じて閉じられます。
typescript
import { range, zip } from 'es-toolkit/iterator';
// 対応する位置の要素をペアにします。
zip([1, 2, 3].values(), ['a', 'b', 'c'].values()).toArray();
// 結果: [[1, 'a'], [2, 'b'], [3, 'c']]
// 最も短いソースが結果の長さを決めます。
zip([1, 2, 3].values(), ['a', 'b'].values()).toArray();
// 結果: [[1, 'a'], [2, 'b']]
// 上限のないカウンターで任意のシーケンスに番号を付けます。
zip(range(0, Infinity), ['a', 'b', 'c'].values()).toArray();
// 結果: [[0, 'a'], [1, 'b'], [2, 'c']]パラメータ
sources(Array<Iterator<unknown>>): まとめて結合するイテレータです。
戻り値
(IteratorObject<[...], undefined>): ペアにした要素のタプルを生成する遅延評価のイテレータで、型はソースに応じて決まります。ネイティブのイテレータヘルパー(map、take、toArray など)をすべて備えているため、そのままチェーンを続けられます。

