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