2017-10-04 47 views
-4

我的問題如下:如何將數組元素分組到與JavaScript相同的數組內的子數組?將數組元素轉換爲子數組?

[ 11, 5, 13, 10, 23, 25, 7, 6 ]

我想達到的結果是:[ [11, 5], [13, 10], [23, 25], [7, 6] ]

+2

那你試試這麼遠嗎? –

+4

歡迎來到Stack Overflow!我們不鼓勵那些只是在背景之外陳述問題的帖子,並期望社羣解決問題。假設你試圖自己解決它並陷入困境,那麼如果你寫下了你的想法和你無法想象的東西,這可能會有所幫助。它肯定會爲你的帖子提供更多的答案。在此之前,這個問題將被投票停止/降低投票。 – Cerbrus

+0

_「嘗試了一些代碼」_,所以告訴我們你試過的是什麼... – Cerbrus

回答

0

你可以通過陣列使用index/2只是迭代,並找到索引。 然後創建一個數組或將index元素推入數組中。 以下是完整的代碼。

var arr = [ 11, 5, 13, 10, 23, 25, 7, 6 ]; 
 

 
let newArr = arr.reduce((acc, curr, i) => { 
 
    let index = Math.floor(i/2); 
 
    let a = acc[index] || []; 
 
    a.push(curr); 
 
    acc[index] = a; 
 
    return acc; 
 
}, []); 
 

 
console.log(newArr);

+1

傳遞給'reduce'回調函數的第三個參數是'currentIndex'。使用它。 – Cerbrus

+0

謝謝<3 :) –

2

因爲我們現在得到的答案,至少讓我們簡化方法:

var arr = [ 11, 5, 13, 10, 23, 25, 7, 6 ]; 
 

 
let newArr = arr.reduce((acc, n, i) => { 
 
    i = Math.floor(i/2); // Calculate the proper index 
 
    acc[i] = acc[i] || []; // Make sure acc[i] is an array 
 
    acc[i].push(n);  // Add the current value to the array. 
 
    
 
    return acc; 
 
}, []); 
 

 
console.log(newArr);