所以,我正在嘗試重新組合元素……以一種難以解釋的方式。這是輸入和預期輸出的示例...
zip(['fred', 'barney'], [30, 40], [true, false]);
should output...
→ [['fred', 30, true], ['barney', 40, false]]
我認為 reduce 是合適的,因為我應該采用多個陣列并將其轉換為包含與輸入陣列長度相同數量的陣列的單個陣列...
這就是我正在做的事情......它不起作用,但我相信我接近正確的想法!
function zip(array) {
return array.reduce((acc, next) => {
// get length of next array to use in for-loop...
let numOfElem = next.length
// use a for loop to access different indexed arrays...
for (let i = 0; i < numOfElem; i ) {
// this is supposed to push the appropriate element in the next array to the accumulator array's corresponding index...
acc[i].push(next[i]);
}
return acc;
}, [])
}
const result = zip(['fred', 'barney'], [30, 40], [true, false]);
console.log(result);
我相信我試圖錯誤地推動?acc[i].push(next[i])背后的想法是acc[i]將根據輸入陣列的長度創建必要數量的陣列。該代碼是非功能性的。我只是在尋找一種讓它作業的方法,即使是通過不同的方法!
感謝您花時間閱讀本文以及任何反饋、提示或技巧!
uj5u.com熱心網友回復:
您可以減少引數并映射相同索引的部分結果。
const
zip = (...array) =>
array.reduce((r, a) => a.map((v, i) => [...(r[i] || []), v]), []);
console.log(zip(['fred', 'barney'], [30, 40], [true, false]));
.as-console-wrapper { max-height: 100% !important; top: 0; }
uj5u.com熱心網友回復:
像這樣的東西?
const arr=[['moe', 'larry', 'curly'], [30, 40, 50], [true]]
const zip=(arr)=>{
let res=[]
for (let k = 0; k < arr[0].length; k ) {
res.push(arr.reduce((acc, curr, i)=>{
acc.push(curr[k])
return acc
},[]))
}
return res
}
console.log(zip(arr))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/376754.html
標籤:javascript 数组 分组 降低
