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,
run добавьте в свой макет [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
denis_alekss,
Цитата:
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 ... |
Вот массив с которым мы работаем: 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 конца идет влево искать элемент.. |
Цитата:
длина вашего массива 11 indexOf(20, -2) ищет с 9 индекса по 10 lastIndexOf(20, -2) ищет с 9 по 0 |
вот это самое главное что хотел усечь, спс Рони, попробовал протестить метод includes, посмотрел https://developer.mozilla.org/ru/doc...Array/includes
там тоже есть второй элемент, проверяет есть ли такой-то элемент в массиве, но если указать к примеру scores.includes(500,-9) работает по тому же принципу как indexOf c 9 элемента с конца ищет по 11 индекс (последний) и соответственно не находит его и выдает false, так как 500 находится на 10 элементе с конца |
Цитата:
И lastIndexOf(20, -2) ищет с 10 по 0 alert([10,300, 500, 10, 70, 20, 100, 30, 100, 40, 20, 10].lastIndexOf(20,-2)) |
Цитата:
|
Элементов 12, а индекс максимальный 11.
lastIndexOf(20, -2) ищет с 10 по 0 indexOf(20, -2) ищет с 10 по 12 |
Часовой пояс GMT +3, время: 09:02. |