Javascript IndexOf Queries

0
var fruits=["Apple", "Oranges", "Mutton", "Chicken"]

alert(fruits.indexOf("Mutton", 1));      // returns 2

alert("Blue Whale".indexOf("", 10));     // returns 10

Синтаксис

str.indexOf(searchValue[, fromIndex])

Необязательный [fromIndex] позволяет указать позицию начала поиска (по умолчанию 0 или поиск всего массива):

Тогда почему приведенный ниже код возвращает 2:

 alert(fruits.indexOf("Mutton", 1));

Я думаю, что он должен начать поиск с первого индекса, который является "Апельсины", и отобразить результат как 1. Но он отображает результат 2.

Также

"Blue Whale".indexOf("", 10)

Здесь, в строке "Синий кит", значение индекса равно 9. Тогда почему он также принимает 10 и отображает результат как 10.

  • 0
    Обратите внимание, что array.indexOf и string.indexOf - это два разных метода, которые делают разные вещи. Они просто звучат похоже, если мы относимся к строкам как к массивам символов.
Теги:

5 ответов

2

Даже если поиск начинается с позиции x, возвращаемое значение будет индексом элемента с начала массива

В случае "Blue Whale".indexOf("", 10) есть 10 символов, и вы ищете пустую строку, которая найдена после последнего символа, поэтому 10 возвращается

  • 0
    Тогда какой смысл использовать необязательный параметр FromIndex?
  • 0
    @Johnny Пример "aba".indexOf('a',1) === 2
Показать ещё 2 комментария
0

Рассмотрим следующий пример:

var a = [1, 2, 3, 1, 2, 3];
a.indexOf(1); // 0
a.indexOf(1, 1 /* = skip index 0 */); // 3
a.indexOf(1, 2 /* = skip indexes 0 and 1 */); // 3

Я хочу игнорировать первое появление:

a.indexOf(1, a.indexOf(1) + 1); // 3
0

Синтаксис

str.indexOf(searchValue [, fromIndex])

поэтому он начинает находить из выбранного индекса, но возвращает индекс в коллекции, поэтому индекс "Mutton" равен 2, его возврат

с пустым строкой возвращает длину строки

  • 0
    Второй параметр IndexOF - это индекс, а не длина?
  • 0
    да, его индекс, из которого мы начинаем искать, но если он больше длины коллекции, возвращает legth, он работает в случае пустой строки и string.indexOf
0

Это потому, что вы установили начальную позицию на 10 и искали "ничего".

Если бы ваша стартовая позиция все равно была 10, а строка, которую вы искали, была примером "e", она вернет -1

Синтаксис

string.indexOf(searchvalue,start)
0

Необязательный параметр indexOf не возвращает позицию уникального элемента в массиве относительно начальной точки, он просто используется для поиска элемента в массиве после этой начальной точки.

Например, если у вас есть это:

var fruits=["Mutton", "Apple", "Oranges", "Mutton", "Chicken"]

тогда

 alert(fruits.indexOf("Mutton", 0)); //Alerts 0

будет возвращать 0, потому что Mutton находится в индексе 0, однако, если вы начнете поиск из индекса 1, он уже прошел мимо Mutton, поэтому не увидит его и вместо этого найдет первую запись Mutton после индекса 1, которая теперь равна 3:

 alert(fruits.indexOf("Mutton", 3)); //Alerts 3

http://jsfiddle.net/zKrzu/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню