@Roma789

Почему строка инициализируется как число?

Привет,в задаче надо удалить все строки из массива.но одна строка "1" почему то не удаляется,она инициализируется как число и в выходном массиве присутствует,не пойму
function f(l) {
  for(let i = 0;i < l.length;i++){
    if(typeof l[i] === "string"){
      l.splice(i,1);
    }
  }
  console.log(l);
};

f([1,2,'aasf','1','123',123]);
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Дело в том, что вы вырезаете из массива кусочек.
В результате длина массива меняется, и после вырезанного всё сдвигается.
Меняются и индексы.

Решение:
После splice добавьте: i--;

Либо перебирайте массив с конца:
for(let i = l.length-1; i >=0; i--) {
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
const f = (arr) => arr.filter((el) => typeof el !== 'string');
f([1,2,'aasf','1','123',123]); // Array(3) [ 1, 2, 123 ]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы