Почему не все элементы удаляются из массива? 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);

→ Ссылка