Книга: JavaScript. Подробное руководство, 6-е издание

7.9.6. Методы indexOf() и lastlndexOf()

7.9.6. Методы indexOf() и lastlndexOf()

Методы indexOf() и lastlndexOf() отыскивают в массиве элемент с указанным значением и возвращают индекс первого найденного элемента или -1, если элемент с таким значением отсутствует. Метод indexOf() выполняет поиск от начала массива к концу, а метод lastlndexOf() - от конца к началу.

а = [0.1,2.1,0];
a. indexOf(1) // => 1: а[1] = 1
a.lastlndexOf(1) // => 3: а[3] = 1
a.index0f(3) // => -1: нет элемента со значением 3

В отличие от других методов, описанных в этом разделе, методы indexOf() и lastlndexOf() не принимают функцию в виде аргумента. В первом аргументе им передается искомое значение. Второй аргумент является необязательным: он определяет индекс массива, с которого следует начинать поиск. Если опустить этот аргумент, метод indexOf() начнет поиск с начала массива, а метод lastlndexOf() - с конца. Во втором аргументе допускается передавать отрицательные значения, которые интерпретируются как смещение относительно конца массива, как в методе splice(): значение -1, например, соответствует последнему элементу массива.

Следующая функция отыскивает заданное значение в массиве и возвращает массив всех индексов, где было найдено совпадение. Здесь демонстрируется, как можно использовать второй аргумент метода indexOf() для поиска совпадений после первого.

// Отыскивает все вхождения значения х в массив и возвращает
// массив индексов найденных совпадений
function findall(a. х) {
  var results = [], // Возвращаемый массив индексов
  len = a.length, // Длина массива, где выполняется поиск
  pos = 0; // Начальная позиция поиска
  while(pos < len) { // Пока остались непроверенные элементы...
    pos = a.indexOf(x, pos); // Искать
    if (pos === -1) break; // Если ничего не найдено, поиск завершен.
    results.push(pos); // Иначе - сохранить индекс в массиве
    pos = pos +1; //И продолжить поиск со следующего элемента
  }
  return results; // Вернуть массив индексов
}

Обратите внимание, что строки также имеют методы indexOf() и lastlndexOf(), которые действуют подобно методам массивов.

Оглавление книги


Генерация: 2.135. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз