Использование splice () в цикле не очень хорошая идея.Вы изменяете длину того, что вы зацикливаете.
Используйте вместо этого filter()
, чтобы исключить нежелательные значения.Вы также можете использовать join()
с пробелом.
var list = input => {
return input.split('')
.map(ch => ch.toLowerCase().charCodeAt(0) - 96)
.filter(n => n > 0 && n < 27)
.join(' ');
}
console.log(list("The sun!!!set sets at twelve o' clock."));
Если вы хотите сплайсировать (), то безопаснее всего сделать это, работая в обратном направлении через массив
for(let i = array.length-1; i >= 0; i--)
Тогда вы не изменитеиндексирование элементов, которые вы еще не посетили