попробуйте этот вариант, он гораздо более практичен (например, если вы хотите разделить массив на основе количества элементов, которые должны быть упакованы в каждом подмассиве):
function chunk(arr, start, amount){
var result = [],
i,
start = start || 0,
amount = amount || 500,
len = arr.length;
do {
//console.log('appending ', start, '-', start + amount, 'of ', len, '.');
result.push(arr.slice(start, start+amount));
start += amount;
} while (start< len);
return result;
};
и использование вваш случай:
var arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],
chunked = chunk(arr, 0, Math.floor(arr.length/3)); //to get 4 nested arrays
console.log(chunked);
и другой случай:
var arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],
chunked = chunk(arr, 0, 3); // to get 6 nested arrays each containing maximum of 3 items
console.log(chunked);