Работа с массивами, не работает метод 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", "прямо", "сейчас", |
denis_alekss,
1 код строка 12 бесполезная, результат нигде не сохраняется. 2 код ошибка в строке 14. 3 та же ошибка. |
Я выводил не новый массив, а старый, в этом был залет. Поменял на строку result.innerHTML += i + " - " + rez[i] + '<br>'} Вроде как заработал вывод. Только есть момент. Если к написать вот так: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Тест</title> </head> <body> <p id="result"></p> <script> let arr = ["Я", "изучаю", "JavaScript", "прямо", "сейчас", "помни", "это"]; let rez = arr.slice(-3); for(let i = 0; i<rez.length; i++){ result.innerHTML += i + " - " + rez[i] + '<br>'} </script> </body> </html> Вывод правильный, с конца массива стартует вывод с третьего элемента по последний: 0 - сейчас 1 - помни 2 - это Ели поменять эту строку: let rez = arr.slice(-3); [Нажмите и перетащите, чтобы переместить] на let rez = arr.slice(2,5); Вывод такой: 0 - JavaScript 1 - прямо 2 - сейчас Но должен произойти вывод со 2-го элемента по 5, но происходит вывод со второго по 4-ый элемент, почему? 2 элемент массива: "JavaScript", 3 элемент массива: "прямо", 4 элемент массива: "сейчас", 5 элемент массива: "помни", 5 -ый элемент, слово помни не выводит. |
Цитата:
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 23:33. |