我將創建一個名為 zip 的函式作為練習的一部分。它需要兩個元素長度相等的陣列,然后將它們分成兩個具有相等索引元素的陣列。我知道還有其他使用 map 函式的解決方案,但我想弄清楚是否有其他解決方案。到目前為止,我有這個:
function zip(arr1, arr2) {
let pairArr = [];
for(var i = 0; i < arr1.length; i ) {
if(arr1.length === arr2.length){
let pairs = [arr1[i],arr2[i]];
pairArr.push(pairs);
} return pairArr;
}
}
這僅回傳一個陣列,其中包含兩個陣列的第一個索引。[1, 2, 3, 4] [1, 2, 3, 4] 回傳 [1, 1]。我需要它回傳 [1, 1] [2, 2] [3, 3] [4, 4]。
謝謝你。
uj5u.com熱心網友回復:
您將回傳放在回圈內。您應該將其添加到回圈之外。例如:
function zip(arr1, arr2) {
let pairArr = [];
for(var i = 0; i < arr1.length; i ){
if (arr1.length === arr2.length){
let pairs = [arr1[i],arr2[i]];
pairArr.push(pairs);
}
}
return pairArr;
}
console.log(zip([1, 2, 3, 4], [1, 2, 3, 4] ));
uj5u.com熱心網友回復:
謝謝大家的意見。我沒有意識到我的回報在回圈中。我確實解決了。這就是我對 zip 功能所擁有的。
function zip(arr1, arr2) {
let pairArr = [];
for(var i = 0; i < arr1.length; i ){
if (arr1.length === arr2.length){
pairArr[i] = [arr1[i],arr2[i]];
}
}return pairArr;
}
uj5u.com熱心網友回復:
這是 JavaScript 中 Python 風格 zip 的一個更好的實作,它可以將任意數量的陣列作為引數,并且只要引數最短就回傳一個結果。
const zip = (...arrays) => {
const length = Math.min(...arrays.map(a => a.length));
return [...Array(length).keys()].map(i => arrays.map(a => a[i]));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/342947.html
標籤:javascript 数组 功能
下一篇:用變數引數化函式。然后洗掉變數
