2017-10-04 83 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);