Почему forEach работает не правильно? [дубликат]

195
30 декабря 2018, 15:10

На данный вопрос уже ответили:

  • удаление элементов из массива javascript 1 ответ

По идее код должен вырезать из массива все значения, кроме цифр, но происходит вообще непонятно что, возможно я как-то не так применил функцию ForEach;

function filter_list(l) { 
  l.forEach(onlyNumber) 
 
  function onlyNumber(item, i, arr) { 
    if(typeof item !== Number) { 
      arr.splice(i, 1); 
    } 
  } 
   
  return l; 
 
} 
 
console.log(filter_list(['a', 1, 3, 'b']));

Answer 1

Методом .splice() вы меняете сам массив во время работы .forEach(). Используйте .filter(), если вам нужно профильтровать массив

function filterList(arr) {
  return arr.filter(function (item) {
    return typeof item === 'number';
  });
}
console.log(filterList(['a', 1, 3, 'b']));
  1. Оператор typeof возвращает строку
READ ALSO
Функции. Массив аргументов [дубликат]

Функции. Массив аргументов [дубликат]

На данный вопрос уже ответили:

217
RSA шифрование в JavaScript

RSA шифрование в JavaScript

Как в JavaScript создать RSA ключи, отправить публичный ключ через сокет, и получить публичный ключ через сокет, зашифвровать сообщение и расшифровывать?

186
прокрутка страница (по якорям/секциям)

прокрутка страница (по якорям/секциям)

Есть JS-библиотека для плавной прокрутки от секции к секции (Пример: https://alvarotrigocom/fullPage/#page1)

199
WebSocket в JavaScript, ошибка при подключении

WebSocket в JavaScript, ошибка при подключении

Пытаюсь подключиться к серверу по 77 порту с помощью такого кода:

177