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);
你可以看到 a 和 b 陣列的長度不同。
輸出:
[[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"]]