Поиск местоположения элементов

Две самые распространенные операции при работе с массивами включают в себя определение индекса элемента, причем обе они, по сути, проверяют наличие элемента в массиве. Библиотека Base упрощает поиск двумя функциями с говорящими именами: dojo.indexOf и dojo.lastIndexOf. Каждая из этих функций возвращает целое число, представляющее собой индекс элемента в массиве, если он существует. Если заданный элемент в массиве отсутствует, функции возвращают значение -1. В сигнатурах этих функций имеется дополнительный параметр, определяющий начальный или конечный индекс, откуда следует начинать поиск. Обе функции имеют одинаковые сигнатуры:
dojo.indexOf(/*Array*/ array, /*Any*/ value, /*Integer?*/ fromIndex)
//возвращает Integer
dojo.lastIndexOf(/*Array*/ array, /*Any*/ value, /*Integer?*/ fromIndex)
//возвращает Integer

Следующий фрагмент программного кода иллюстрирует некоторые основные приемы использования этих методов:
var foo = [1,2,3];
var bar = [4,5,6,5,6];
var baz = [1,2,3];
dojo.indexOf([foo, bar], baz); // -1
dojo.indexOf(foo, 3); // 2
dojo.indexOf(bar, 6, 2); // 2
dojo.indexOf(bar, 6, 3); // 4
dojo.lastIndexOf(bar, 6); // 4

Кроме того, следует отметить, что эти методы выполняют поверхностное сравнение.


Для таких сложных структур данных, как Array, это означает, что сравниваются ссылки на объекты. Следующий фрагмент поясняет это утверждение на конкретном примере:
bop = [4,5,6,5,6, foo]; // bop содержит вложенный массив
dojo.indexOf(bop, foo); //5, потому что (ссылка на) foo содержится в bop
dojo.indexOf(bop, [1,2,3]); //-1, потому что foo - это не тот же самый объект
//что и [1,2,3]

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Dojo на эту тему:
Аргументы «функции в виде строк»
Блочная модель
Грубое определение типа
Добавление узлов
Зачем управлять беспорядком

Вернуться в раздел: Dojo / Утилиты броузера