Почему не все элементы удаляются из массива? JS, method pop()
function stringPop(str) {
let stringResult = str.split("");
for (let i = 0; i < stringResult.length; i++) {
console.log(stringResult.length) //
stringResult.pop();
}
return stringResult;
}
console.log(stringPop("something"));
Должен в идеале выдать пустой массив. Однако выдает some. В чем проблема?
splice тоже такое выдает
Ответы (1 шт):
Автор решения: OPTIMUS PRIME
→ Ссылка
А попробуйте в вашем коде выводить не только длину массива, но и i
let res = "something".split("");
for (let i = 0; i < res.length /* ◄◄ */; i++) {
res.pop();
console.log(i, '<', res.length, '?', i < res.length /* ◄◄ */);
}
console.log('' + res);
i увеличивается, длина уменьшается.
Оба доходят до 4, условие i < res.length, оно же, 4 < 4 не выполняется и цикл прерывается.
При удалении элементов массива, «шагайте» по индексам справа налево:
let res = "something".split("");
for (let i = res.length - 1; i >= 0; i--) {
res.pop();
console.log(i, '?', res.length);
}
console.log(res);