Вы хотите, чтобы это было в 2 разделе кусков?
var o = ['a', 'b', 'c', 'd', 'e', 'f'],
size = 2, i, ar = []; // The new array
for (i = 0; i < o.length; i += size) ar.push(o.slice(i,i + size));
Теперь, ар есть:
[
['a', 'b'],
['c', 'd'],
['e', 'f']
]
Независимо от того, как вы это делаете, там все дни будет какой-то зацикливание. Компилятор должен пройти через все элементы массива, чтобы создать новый массив.
Тесты скорости
Так я создам массив с этим:
var l = 10000000, // The length
o = [], j;
for (j = 0; j < l; j += 1) o.push(j);
Так что сделает массив с l
пунктов сейчас, чтобы проверить скорость:
var start = performance.now(),
size = 2, ar = [];
for (i = 0; i < o.length; i += size) ar.push(o.slice(i,i + size));
console.log(performance.now() - start);
Тесты:
100 тысяч: +0,092909533996135 секунд
1 миллион: +0,359059600101318 секунд
10 миллионов: +10,138852232019417 секунд
10 миллионов раз может удивить, но если у вас есть что большой массив, у вас большие проблемы, такие как проблемы с памятью. И если этот массив поступает с сервера, вы, вероятно, будете испытывать чрезмерную нагрузку на сервер.
означает, что вы хотите сгруппировать их в 2-2 элементах. – Mritunjay
. Вы протестировали создание нового массива, чтобы увидеть, медленно ли он? JS довольно быстро, поэтому я не буду беспокоиться о микро оптимизациях, если вы не нашли бутылочную шее. – JulianAustralia
Вполне вероятно, что выполнение этого на месте в исходном массиве будет * медленнее *, чем создание нового массива. Изменение типа элементов массива «на лету» может помешать оптимизации массива. Для скорости лучше всего, чтобы все элементы в заданном массиве были одного типа. –