Вывод результата функции во время ее исполнения js
Пытаюсь сделать кату(codewars), где нужно вывести из массива все числа, а строки удалить, написал код
function filterlist(l) {
for (let i = 0; i < l.lenght; i++){
if (typeof l[i] == 'string'){
l.splice(i, 1);
i--;
}
}
console.log(l); //Если отпрашивать функции тут, я получаю изначальный элемент
}
let c = (filterlist([1,2,'a','b']),[1,2]);
console.log(c); //А если тут, я получаю строку уже обработанную.
Как я понимаю, по решению каты, нужно сделать return с массивом, когда он уже изменен, но если делать это после исполнение функции, я получаю стартовый массив, а если сделать после функции, я получаю ошибку.
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
У вас ошибка Array.length. вы написали lenght.
Предлагаю сделать так и не мучатся
let c = [1,2,'a','b'].filter(i => typeof i != 'string');
console.log(c);
а если хотите мучаться то так. Перебирайте массив с конца если удалять из него элементы
function filterlist(l) {
for (let i = l.length - 1 ; i > 0 ; i--){
if (typeof l[i] === 'string'){
l.splice(i, 1);
}
}
return l;
}
let c = filterlist([1,2,'a','b']);
console.log(c); //А если тут, я получаю строку уже обработанную.
По поводу вывода
function filterlist(l) {
for (let i = l.length - 1 ; i > 0 ; i--){
if (typeof l[i] === 'string'){
console.log(l);
l.splice(i, 1);
}
}
return l;
}
let c = filterlist([1,2,'a','b']);
console.log(c); //А если тут, я получаю строку уже обработанную.