Member 14052128 Ответов: 2

String.indexof() всегда говорит iam -1?


У меня есть функция JavaScript, чтобы найти индекс массива, как это

function myFunction() {
  var fruits = ["Lesson%202%20*,Lesson%203,Lesson%201%20*,"];
  var a = fruits.indexOf("Lesson%203");
  document.getElementById("demo").innerHTML = a;
}


этот массив всегда приводит к -1 а это неправильно!!

в то время как эта функция ниже
function myFunction() {
  var fruits = ["Banana", "Orange", "Apple", "Mango"];
  var a = fruits.indexOf("Apple");
  document.getElementById("demo").innerHTML = a;
}

возвращает индекс, как 2 и это правильно.

может ли кто-нибудь объяснить логику, стоящую за этим?

Что я уже пробовал:

код, который я попробовал, показан выше

CHill60

В вашем первом примере у вас есть только одна запись в массиве - сравните, где находятся кавычки между двумя примерами

Member 14052128

хорошо, что это была опечатка, которую я сделал, набирая вопрос извините за это, можете ли вы найти какую-либо другую ошибку?

CHill60

Я предполагаю, что у вас все еще есть опечатка - даже после исправления у вас все еще есть только одна строка в этом массиве. Сделайте так, как предлагает @Dave-Kreskowiak, и вставить ваш код в ваш вопрос. Так и должно быть

var fruits = ["Lesson%202%20*","Lesson%203","Lesson%201%20*,"];

2 Ответов

Рейтинг:
9

Dave Kreskowiak

У вас есть массив только из одной строки, и вы ищете строковую запись в массиве, которая не соответствует. Вы ожидаете, что метод IndexOf будет находить подстроки в элементах массива, а это не то, что он делает.

"Урок%203" не равен "уроку%202%20*,уроку%203,уроку%201%20*".

Как вы сказали, это может быть опечатка. Если это так, не вводите код. Скопируйте и вставьте точный код, который вы используете.


Member 14052128

да, я нашел свою ошибку, как и сказал @anurag

Рейтинг:
14

Anurag Gandhi

Привет,
Существует основная опечатка при объявлении массива фруктов. После исправления:

function myFunction() {
  var fruits = ["Lesson%202%20*", "Lesson%203", "Lesson%201%20*,"];
  var a = fruits.indexOf("Lesson%203");
  document.getElementById("demo").innerHTML = a;
}

Это возвращает 1. Как и следовало ожидать.


Member 14052128

спасибо что поправили меня :)

CHill60

На самом деле это я вас поправил, за 2 часа до того, как это решение было опубликовано!