Как вытолкнуть все элементы из массива - PullRequest
0 голосов
/ 13 апреля 2020
var arr = [0,1,2,2,3,4,5,5,6];

for(let i = 0; i < arr.length; i++) {
    let item = arr.pop()
    console.log(item)
}
//Returns 6, 5, 5, 4, 3

Я понятия не имею, почему это возвращает только числа, данные вместо каждого числа в массиве. Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 13 апреля 2020

На основании документации .pop() возвращает:

Удаленный элемент из массива; undefined если массив пуст.

Так что технически на каждой итерации код удаляет последний элемент из массива, который изменяет свойство .length.

Возможно, хорошее представление что происходит с расширенным индексом из l oop:

var arr = [0,1,2,2,3,4,5,5,6];

for(let i = 0; i < arr.length; i++) {
    let item = arr.pop()
    console.log({i, item, length: arr.length});
}

Все вместе for l oop выполнял блок пять раз, что представляет последние пять элементов из вашего массива, если вы читаете массив сзади. Вот почему у вас есть 6,5,5,4,3 в качестве вывода.

Надеюсь, это прояснится!

0 голосов
/ 13 апреля 2020

Вам нужно отменить итерацию, потому что метод .pop удаляет последний элемент, поэтому при переходе от 0 к последнему элементу вы не найдете их все:)

var arr = [0,1,2,2,3,4,5,5,6];

for(let i = arr.length; i > 0; i--) {
    let item = arr.pop()
    console.log(item)
}
0 голосов
/ 13 апреля 2020

Можете ли вы изменить for на while l oop? Затем вы бы консоль журнала все элементы

while(arr.length) {
    let item = arr.pop()
    console.log(item)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...