Какой самый быстрый способ перебрать массив в JavaScript? - PullRequest
221 голосов
/ 18 марта 2011

Я узнал из книг, что вы должны написать для цикла, как это:

for(var i=0, len=arr.length; i < len; i++){
    // blah blah
}

, поэтому arr.length не будет рассчитываться каждый раз.

Другие говорят, что компилятор сделает некоторую оптимизацию для этого, так что вы можете просто написать:

for(var i=0; i < arr.length; i++){
    // blah blah
}

Я просто хочу знать, какой способ лучше всего применять на практике?

Ответы [ 22 ]

0 голосов
/ 12 января 2019

По состоянию на 2019 год WebWorker стал более популярным, для больших наборов данных мы можем использовать WebWorker для гораздо более быстрой обработки, полностью используя многоядерные процессоры.

У нас также есть Parallel.js которые значительно упрощают использование WebWorker для обработки данных.

0 голосов
/ 20 ноября 2014

Еще один тест на jsperf.com: http://jsperf.com/while-reverse-vs-for-cached-length

Обратный цикл while кажется самым быстрым.Единственная проблема в том, что while (--i) остановится на 0. Как я могу получить доступ к массиву [0] в моем цикле?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...