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

Работа с массивами, не работает метод slice
Прочитал про метод slice на сайте Javascript https://learn.javascript.ru/array-methods. Не правильно выводит массив.

Вот код:
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Тест</title>
 </head>
 <body>  
<p id="result"></p>

    <script>
let arr = ["Я", "изучаю", "JavaScript", "прямо", "сейчас", "помни", "это"];
arr.slice(-4);
for(let i = 0; i<arr.length; i++){
result.innerHTML += i + " - " + arr[i] + '<br>'}
 
  </script>
 </body>
</html>



arr.slice(-4);

Должна с 4-го элемента, считаем с конца массива, так как там минус 4. Это элемент прямо.

Должно вывести со слова прямо до конца все элементы. А выводит все элементы полностью.

Если изменить код на такой:
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Тест</title>
 </head>
 <body>  
<p id="result"></p>

    <script>
let arr = ["Я", "изучаю", "JavaScript", "прямо", "сейчас", "помни", "это"];
let rez = arr.slice(-4);
for(let i = 0; i<rez.length; i++){
result.innerHTML += i + " - " + arr[i] + '<br>'}
 
  </script>
 </body>
</html>




произойдет вывод только первых 4-х элементов, но правило гласит если -4, с конца считаем 4 -ый элемент и выводим все элементы до конца, но выводится почему-то элементы сначала,

0 - Я
1 - изучаю
2 - JavaScript
3 - прямо

вместо такого вывода:

"прямо", "сейчас", "помни", "это"



Второй пример:

Если я захочу скопировать с какого-то элемента массива по какой-то. Например со 2-го элемента по 5.

И напишу такой код:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Тест</title>
 </head>
 <body>  
<p id="result"></p>

    <script>
let arr = ["Я", "изучаю", "JavaScript", "прямо", "сейчас", "помни", "это"];
let rez = arr.slice(2,5);
for(let i = 0; i<rez.length; i++){
result.innerHTML += i + " - " + arr[i] + '<br>'}
 
  </script>
 </body>
</html>



arr.slice(2,5); Не происходит копирования, происходит вывод непонятно чего, а вывод такой в итоге:
0 - Я
1 - изучаю
2 - JavaScript



хотя я эти элементы не выбирал вообще, а выбирал эти:

"изучаю", "JavaScript", "прямо", "сейчас",
Ответить с цитированием