суббота, 9 февраля 2013 г.

поиск в массиве объектов

Время поиска в мс.

Результаты тестов (Celeron 2.4)

Оказалось, что оператор in работает практически мгновенно (время выполнения всегда 0), даже в IE6!

Для оценки производительности каждого из трёх методов поиска я создал , на которой создаётся 100 000 строк вида «СтрокаN», где N номер строки, и затем производится поиск строки «Строка60000».

* This source code was highlighted with .

if ("Строка поиска" in myarray) { ... }

Использование объекта вместо массива, «значениями массива» являются ключи хеша

* This source code was highlighted with .

if (("#" + myarray.join("#,#") + "#").search("#Строка поиска#") != -1) { ... }

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

* This source code was highlighted with .

if (myarray.join().search("Строка поиска") != -1) { ... }

Склейка массива в строку и поиск в строке

А варианты поиска без перебора следующие:

Но так как порядок следования элементов был не важен и каждая миллисекунда была на счету, то я сравнил производительность перебора цикла в массиве с другими вариантами поиска (без перебора).

В JavaScript 1.6 существует объекта Array для поиска в массиве, но этот метод не поддерживается в Internet Explorer. Для IE данный метод реализовывается с помощью перебора массива в цикле.

Недавно решал задачу, когда нужно было определить, попадает ли определённое (строковое) значение во множество допустимых значений.

Поиск в массиве (множестве) в JavaScript

12 декабря 2008 в 00:08

Поиск в массиве (множестве) в JavaScript / Хабрахабр

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

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