28.12.2020, 00:26
|
Аспирант
|
|
Регистрация: 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.
|
|
28.12.2020, 00:33
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
denis_alekss,
run добавьте в свой макет
[html run]
... минимальный код страницы с вашей проблемой
[/html]
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
|
|
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 ...
|
|
28.12.2020, 22:41
|
Аспирант
|
|
Регистрация: 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.
|
|
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
|
|
29.12.2020, 00:06
|
Аспирант
|
|
Регистрация: 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.
|
|
29.12.2020, 07:33
|
|
Профессор
|
|
Регистрация: 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))
|
|
29.12.2020, 08:22
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
Сообщение от voraa
|
Вообще то длина массива 12.
|
|
|
29.12.2020, 19:45
|
Аспирант
|
|
Регистрация: 01.12.2020
Сообщений: 55
|
|
Элементов 12, а индекс максимальный 11.
lastIndexOf(20, -2) ищет с 10 по 0
indexOf(20, -2) ищет с 10 по 12
|
|
|
|