Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.12.2020, 00:26
Аспирант
Отправить личное сообщение для denis_alekss Посмотреть профиль Найти все сообщения от denis_alekss
 
Регистрация: 01.12.2020
Сообщений: 55

indexOf и lastIndexOf
Непонятно каким образом происходит поиск через indexOf и lastIndexOf
если присутствует второй отрицательный элемент массива.
Написал для примера код:
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Тест</title>
 </head>
 <body>  
<p id="result"></p>

    <script>
var scores = [10,300, 500, 10, 70, 20, 100, 30, 100, 40, 20, 10];
const arrNames = ["Вася","Петя","Коля","Джулия",
"Ефросинья","Степан","Борис","Антон","Остап"];

//Ищет с нулевого элемента по конец, первая цифра 20 встречается на 5 индексе
result.innerHTML += (scores.indexOf(20)) + ' <br>'; 
//Ищет с последнего элемента по начало, первую цифру 20 встречается на 10 индексе
result.innerHTML += (scores.lastIndexOf(20)) + ' <br>'; 

result.innerHTML += (scores.indexOf(20, -2)) + ' <br>';
result.innerHTML += (scores.lastIndexOf(20,-2)) + ' <br>'; 

  </script>
 </body>
</html>



Интересует вывод последних 2-ух строк со вторым отрицательным параметром в indexOf и lastIndexOf. Откуда идет отсчет и как он идет если есть второй отрицательный элемент в параметре, я про цифру -2.

Последний раз редактировалось denis_alekss, 28.12.2020 в 21:10.
Ответить с цитированием
  #2 (permalink)  
Старый 28.12.2020, 00:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

denis_alekss,
run добавьте в свой макет
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 28.12.2020, 00:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

denis_alekss,
Сообщение от denis_alekss
Откуда идет отсчет и как он идет если есть второй отрицательный элемент в параметре, я про цифру -2.
а доку почитать?
https://developer.mozilla.org/ru/doc...ay/lastIndexOf
result.innerHTML += (scores.indexOf(20, -2)) + ' <br>'; 20, 10
result.innerHTML += (scores.lastIndexOf(20,-2)) + ' <br>'; 20, 40, 100, 30 ...
Ответить с цитированием
  #4 (permalink)  
Старый 28.12.2020, 22:41
Аспирант
Отправить личное сообщение для denis_alekss Посмотреть профиль Найти все сообщения от denis_alekss
 
Регистрация: 01.12.2020
Сообщений: 55





Вот массив с которым мы работаем:

var scores = [10,300, 500, 10, 70, 20, 100, 30, 100, 40, 20, 10];



scores.indexOf(20, -2) - со второго элемента с конца массива, это число 20 идет поиск первого совпадения? Ищет со второго элемента с конца включая его, верно? Второй элемент с конца массива является предпоследним, под индексом 10.

scores.lastIndexOf(20,-2) стратегия такая же самая, начинается поиск со второго элемента с конца, включая его? Ведь результат такой же, также выводит индекс 10.



Если написать такую строку:

scores.lastIndexOf(10,-5)



правильно я понимаю, что 5 элемент с конца, это цифра 30, включая ее, с нее стартует поиск к началу массива? И что первое на пути с конца вначало совпадет с цифрой 30, тот и индекс выведется? Даже если эти цифр 30 будет 8 раз на пути к началу массива?

Получается отрицательный второй -2 не важно стоит в indexOf или lastIndexOf ищется с конца массива к началу?


Такое дело и со строками, не только с числами?

indexOf с конца идет вправо, а lastIndexOf c конца идет влево искать элемент..



Последний раз редактировалось denis_alekss, 28.12.2020 в 23:42.
Ответить с цитированием
  #5 (permalink)  
Старый 28.12.2020, 23:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Сообщение от denis_alekss
Получается отрицательный второй -2 не важно стоит в indexOf или lastIndexOf ищется с конца массива к началу?


длина вашего массива 11
indexOf(20, -2) ищет с 9 индекса по 10
lastIndexOf(20, -2) ищет с 9 по 0
Ответить с цитированием
  #6 (permalink)  
Старый 29.12.2020, 00:06
Аспирант
Отправить личное сообщение для denis_alekss Посмотреть профиль Найти все сообщения от denis_alekss
 
Регистрация: 01.12.2020
Сообщений: 55

вот это самое главное что хотел усечь, спс Рони, попробовал протестить метод includes, посмотрел https://developer.mozilla.org/ru/doc...Array/includes

там тоже есть второй элемент, проверяет есть ли такой-то элемент в массиве, но если указать к примеру scores.includes(500,-9)
работает по тому же принципу как indexOf c 9 элемента с конца ищет по 11 индекс (последний) и соответственно не находит его и выдает false, так как 500 находится на 10 элементе с конца

Последний раз редактировалось denis_alekss, 29.12.2020 в 00:13.
Ответить с цитированием
  #7 (permalink)  
Старый 29.12.2020, 07:33
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от рони
длина вашего массива 11
indexOf(20, -2) ищет с 9 индекса по 10
lastIndexOf(20, -2) ищет с 9 по 0
Вообще то длина массива 12.
И lastIndexOf(20, -2) ищет с 10 по 0
alert([10,300, 500, 10, 70, 20, 100, 30, 100, 40, 20, 10].lastIndexOf(20,-2))
Ответить с цитированием
  #8 (permalink)  
Старый 29.12.2020, 08:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Сообщение от voraa
Вообще то длина массива 12.
Ответить с цитированием
  #9 (permalink)  
Старый 29.12.2020, 19:45
Аспирант
Отправить личное сообщение для denis_alekss Посмотреть профиль Найти все сообщения от denis_alekss
 
Регистрация: 01.12.2020
Сообщений: 55

Элементов 12, а индекс максимальный 11.
lastIndexOf(20, -2) ищет с 10 по 0
indexOf(20, -2) ищет с 10 по 12
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять, помогите, indexOf SergoMorello Общие вопросы Javascript 17 02.11.2017 19:50
Найти все вхождения подстроки, с помощью indexOf в цикле for? dima*** Общие вопросы Javascript 3 18.02.2014 14:04
Переменные и indexOf Ilya83 Общие вопросы Javascript 6 03.01.2014 12:15
Проблема метода indexOf() в разных браузерах! Rodger1956629 Javascript под браузер 7 31.07.2013 02:54
indexof в функцию kolyas Общие вопросы Javascript 5 19.06.2013 00:31