[JavaScript] 將二維陣列轉換為一維陣列

透過 JavaScript 的 flat() 方法,將二維陣列轉換為一維陣列的任務變得輕而易舉,然而,探索其他方法來實現這種轉換,將有助於加深對 JavaScript 陣列的理解。本文將解釋四種不同的方法來執行這項任務:

  1. 應用 Array.flat() 方法
  2. 使用 Spread 語法
  3. 運用 Array.reduce()
  4. 運用 forEach() 迴圈

我們將探討每種方法的優缺點,找出哪種方法最為高效。

1. 應用 Array.flat() 方法

Array.flat() 是一個用於展平陣列的內建方法。

javascript
const twoDArray = [[1, 2], [3, 4]];
const oneDArray = twoDArray.flat();
console.log(oneDArray); // 輸出:[1, 2, 3, 4]

這種方法簡潔而具有特定目的,但在某些舊版瀏覽器中不受支援。

2. 使用 Spread 語法

Spread 語法允許在期望的位置擴展可迭代物件。這可以用來將二維陣列展平。

javascript
const twoDArray = [[1, 2], [3, 4]];
const oneDArray = [].concat(...twoDArray);
console.log(oneDArray); // 輸出:[1, 2, 3, 4]

這種方法簡單明了,符合現代風格,但對於嵌套深的陣列可能不適用。

3. 運用 Array.reduce()

Array.reduce() 可用於將二維陣列轉換為一維陣列。

javascript
const twoDArray = [[1, 2], [3, 4]];
const oneDArray = twoDArray.reduce((acc, val) => acc.concat(val), []);
console.log(oneDArray); // 輸出:[1, 2, 3, 4]

這種方法具有多樣性,但對於不熟悉 reduce 方法的人來說,可讀性可能較低。

4. 運用 forEach() 迴圈

使用 forEach() 迴圈可以手動展平陣列。

javascript
const twoDArray = [[1, 2], [3, 4]];
let oneDArray = [];
twoDArray.forEach(subArray => oneDArray.push(...subArray));
console.log(oneDArray); // 輸出:[1, 2, 3, 4]

這種方法提供細緻的控制,但可能被視為不夠優雅。


上述每種方法都有其獨特的用途,具有特定的優點和缺點。透過練習這些方法,您可能會掌握更多多功能的技巧,並對 JavaScript 的能力有更深入的洞察。


常見問題解答

  1. 將二維陣列轉換為一維陣列時,哪種方法最高效? Array.flat() 通常是展平陣列的最有效方法,因為它是專為此目的而建。
  2. 有方法可以將嵌套深的陣列展平嗎? 您可以使用帶有深度參數的 Array.flat(),例如 Array.flat(Infinity) 可以適用於任何深度。
  3. 瀏覽器相容性如何? 使用像 Array.flat() 這樣的新功能時,請檢查相容性,因為舊版瀏覽器可能不支援。
  4. 我可以結合這些方法嗎? 是的,在複雜的情境下,您可以結合方法來達到所需的結果。
  5. 如果我需要更多轉換控制怎麼辦? 使用像 forEach() 或 reduce() 這樣的方法可以對轉換過程進行更多自定義的控制。
© Copyright 2023 CLONE CODING