HOWTO · JavaScript

JavaScript 中壓縮陣列

本文幫助你瞭解如何在 JavaScript 中壓縮兩個或多個陣列。

在 JavaScript 中,有時我們希望壓縮兩個陣列。在本教程中,我們將研究使用 JavaScript 重新整理兩個集合。

必須編寫 Python zip 函式的 JavaScript 對應項。換句話說,我們需要在給定許多等長集合的情況下建立一個對陣列。

在 JavaScript 中,我們可以通過多種方式壓縮兩個陣列,例如使用 map() 方法、Array.from() 方法和 Array.prototype.fill() 方法。

在 JavaScript 中使用 map 方法壓縮陣列

JavaScript 中的 map() 函式壓縮了兩個一定長度的陣列。但是,如果兩個陣列的長度不匹配,則會導致 undefined

let a = [9, 8, 7];
let b = ['1', '2', '3'];
let zip = a.map(function(e, i) {
  return [e, b[i]];
});
console.log(zip);

執行程式碼

map() 方法接受的回撥函式將呼叫 a 陣列的元素以及與 a 集合對映的 b 陣列的元素。學習如何以這種方式拉上拉鍊也很簡單。

輸出:

[[9, "1"], [8, "2"], [7, "3"]]

使用 map 方法時,確保兩個陣列的長度必須相同;否則,你將得到結果undefined

let a = [9, 8, 7, 6];
let b = ['1', '2', '3'];
let zip = a.map(function(e, i) {
  return [e, b[i]];
});
console.log(zip);

這裡演示

你可以看到 ab 陣列的長度不同。

輸出:

[[9, "1"], [8, "2"], [7, "3"], [6, undefined]]

在 JavaScript 中使用 Array.from 方法壓縮陣列

let a = [9, 8, 7, 6];
let b = ['90', '80', '70', '60'];
let zip = (a, b) =>
    Array.from(Array(Math.max(a.length, b.length)), (_, i) => [a[i], b[i]]);
console.log(zip(a, b));

執行程式碼

Array.from 方法的例項中將存在兩個陣列;它們將被髮送到箭頭函式。匹配長度後,該過程將對映來自兩個單獨陣列的專案。

輸出:

[[9, "90"], [8, "80"], [7, "70"], [6, "60"]]

此外,等效對映將為任何缺失的元素輸出undefined

let a = [9, 8, 7];
let b = ['90', '80', '70', '60'];
let zip = (a, b) =>
    Array.from(Array(Math.max(a.length, b.length)), (_, i) => [a[i], b[i]]);
console.log(zip(a, b));

這裡演示

輸出:

[[9, "90"], [8, "80"], [7, "70"], [undefined, "60"]]

Array.prototype.fill() 方法的工作原理與 Array.from() 方法相同。

let a = [7, 8, 9];
let b = ['70', '80', '90'];
let zip = (a, b) =>
    Array(Math.max(a.length, b.length)).fill().map((_, i) => [a[i], b[i]]);
console.log(zip(a, b));

執行程式碼

輸出:

[[7, "70"], [8, "80"], [9, "90"]]