Поиск по этому блогу

воскресенье, 25 марта 2012 г.

JavaScript. Поиск по масиву или кто быстрее.

Здравствуйте,

Недавно в целях траты времени получения опыта решил написать игру Сапёр (Miner)  на JavaScript'е. Не вдаваясь в подробности скажу что часто приходилось проверять наличие в массиве искомого значения.
С учётом частоты проверок я подумал что не очень хорошо каждый раз проходится по массиву и спрашивать у его элементов "это ты ?" и мне стукнула пришла в голову идея использовать join() для построения строки с массива и уже у строки спрашивать indexOf().
Код:
array_to_search_in_str = '|' + array_to_search_in.join('|') + '|';
for (i = 1; i <= values_to_search; i++) {
  if (array_to_search_in_str.indexOf('|' + values_to_search[i] + '|') !== -1) {
    // Code to do if found a value
  }
}
Оговорюсь сразу , перед написанием статьи пробил в гугле провел небольшое исследование по поиску значений в массиве и вот его результаты:
  • у большинства современных браузеров присутствует метод indexOf() для массивов (для тех у кого нету я нашел реализацию на StackOverflow );
  • пробеги через for и Array.indexOf лучше чем String.indexOf только тем что они позволяют искать не только простые типы данных (int, string) но и массивы и объекты внутри массива;
После того как я узнал о Array.indexOf не мог поверить что так затупил и решил провести небольшое тестирование производительности найденных способов поиска. Результаты и исходники можно проверить тут.

Комментариев нет:

Отправить комментарий