JavaScript では、配列の操作は日常的なプログラミングの基本です。ただし、複数の配列を要素ごとに組み合わせるには、多くの場合、冗長なソリューションまたは外部ソリューションが必要になります。今後の提案である Array.zip と Array.zipKeyed は、このプロセスを簡素化し、配列の処理をより直感的かつパフォーマンス的にすることを目的としています。これらの提案、その構文、使用例、潜在的な課題について詳しく見ていきましょう。
複数の配列の結合には、次のことが含まれることがよくあります。
これにより、コードが冗長で読みにくくなります。たとえば、2 つの配列を要素ごとに結合するには、次のものが必要です。
const array1 = [1, 2, 3]; const array2 = ['a', 'b', 'c']; const combined = array1.map((value, index) => [value, array2[index]]); console.log(combined); // [[1, 'a'], [2, 'b'], [3, 'c']]
このアプローチは機能的ではありますが、優雅さに欠けており、定型的なものになります。
これらのメソッドは、複数の配列の同期をよりシンプルかつ人間工学的にすることで、コードの可読性を向上させ、配列操作を合理化することを目的としています。
Array.zip(...iterables);
const numbers = [1, 2, 3]; const letters = ['a', 'b', 'c']; const booleans = [true, false, true]; const result = Array.zip(numbers, letters, booleans); console.log(result); // Output: [[1, 'a', true], [2, 'b', false], [3, 'c', true]]
Array.zipKeyed(keys, ...iterables);
const keys = ['id', 'name', 'isActive']; const ids = [101, 102, 103]; const names = ['Alice', 'Bob', 'Charlie']; const statuses = [true, false, true]; const result = Array.zipKeyed(keys, ids, names, statuses); console.log(result); // Output: // [ // { id: 101, name: 'Alice', isActive: true }, // { id: 102, name: 'Bob', isActive: false }, // { id: 103, name: 'Charlie', isActive: true } // ]
個別の配列を返す API など、複数のソースからのデータを結合する場合:
const headers = ['Name', 'Age', 'City']; const values = ['Alice', 30, 'New York']; const result = Array.zipKeyed(headers, values); console.log(result); // Output: [{ Name: 'Alice', Age: 30, City: 'New York' }]
ヘッダーを対応する行の値にマッピングすることで、CSV ファイルをオブジェクトに解析します。
const headers = ['Product', 'Price', 'Stock']; const row1 = ['Laptop', 1000, 50]; const row2 = ['Phone', 500, 150]; const data = [row1, row2].map(row => Array.zipKeyed(headers, row)); console.log(data); // Output: // [ // { Product: 'Laptop', Price: 1000, Stock: 50 }, // { Product: 'Phone', Price: 500, Stock: 150 } // ]
フィールド名と値を組み合わせて処理します:
const array1 = [1, 2, 3]; const array2 = ['a', 'b', 'c']; const combined = array1.map((value, index) => [value, array2[index]]); console.log(combined); // [[1, 'a'], [2, 'b'], [3, 'c']]
複数の配列を含む関連計算を簡素化します:
Array.zip(...iterables);
入力配列の長さが異なる場合、最も短い配列の要素のみが結合されます。
const numbers = [1, 2, 3]; const letters = ['a', 'b', 'c']; const booleans = [true, false, true]; const result = Array.zip(numbers, letters, booleans); console.log(result); // Output: [[1, 'a', true], [2, 'b', false], [3, 'c', true]]
圧縮する前に配列の長さを正規化します。
キーと配列の不一致により、値が未定義または欠落する可能性があります。
Array.zipKeyed(keys, ...iterables);
キーが配列の数と一致していることを確認してください。
現時点では、これらの機能は TC39 提案プロセスの ステージ 1 にあり、ほとんどの環境では利用できません。
ポリフィルを使用するか、公式サポートを待ちます。
Array.zip および Array.zipKeyed 提案は、JavaScript での配列処理に待望の人間工学的な向上をもたらす準備が整っています。これらの方法により定型文が削減され、読みやすさが向上するため、開発者は同期されたデータをより効率的に操作できるようになります。
シリーズの次回の記事では、Atomics.pause と、それが JavaScript のマルチスレッド パフォーマンスをどのように強化するかについて説明します。
以上が今後の JavaScript 機能: `Array.zip` と `Array.zipKeyed` による配列の組み合わせの簡素化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。