反復

2017-12-21 22 views
1

は、私は0より大きい整数n、およびこのような配列を持っていると仮定すると:反復

var array = [1, 2, 5, 6, 8, 9, 12, 13, 17...] //random values 

はどのようにして通過してとなって、この配列を繰り返し処理します一度に値n(それを2D配列に入れます)?

nが3だった場合は、例えば、私は

[[1, 2, 5], [6, 8, 9], [12, 13, 17]...] 

の戻り値をしたいと思うし、コードは次のように次のようになります。これで

var array = []; 
for (var i = 0; i < array.length; i += 3) { 
    var first = array[i]; 
    var second = array[i+1]; 
    var third = array[i+2]; 

    array.push([ 
     first, second, third 
    ]); 
} 

問題は、私は値を修正したということです(ii+1など)でオブジェクトを取得する

整数が不明な場合は、まで増やしてくださいは機能しません。

これを達成するにはどうすればよいですか?

答えて

1

チャンクを取ると、アレイを通過するために使用slice

const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]; 
 

 
const partition = (n, arr) => { 
 
    const result = []; 
 
    let i = 0; 
 
    
 
    while(i < arr.length) { 
 
    result.push(arr.slice(i, i + n)); 
 
    i = i + n; 
 
    } 
 
    
 
    return result; 
 
}; 
 

 
console.log(partition(1, arr)); 
 
console.log(partition(2, arr)); 
 
console.log(partition(3, arr)); 
 
console.log(partition(4, arr));