Почему я получаю пустой массив?

avatar
mattangel
9 августа 2021 в 00:14
59
2
-1

я пытаюсь сравнить отдельные числа в массиве, который я передаю в качестве одного из аргументов моей функции, с другим аргументом, который является одним числом. Я хотел бы поместить числа, которые не эквивалентны, в новый пустой массив, а затем вернуть этот массив, но по какой-то причине я получаю только пустой массив. кажется, что цифры не нажимаются. Будем признательны за любую помощь.


function removeChar(arr, num) {
  let newArray = [];
  for (number of arr) {
   
    if (!number === num) {
      newArray.push(number);
       console.log(newArray)
    }
  }
  console.log(newArray);
}


removeChar([2,5,4,3], 5)

Источник

Ответы (2)

avatar
Nathace
9 августа 2021 в 00:22
0

Я бы предложил вместо этого использовать метод array.filter, который возвращает все, что истинно в заданном вами условии.

avatar
CertainPerformance
9 августа 2021 в 00:17
1
if (!number === num) {

сначала инвертирует number (в логическое значение), а затем сравнивает его с num (который всегда будет false, поскольку num — это число, а не логическое значение). Это как

if ((!number) === num) {

Вам нужно

if (number !== num) {

Или, еще лучше:

const removeChar = (arr, num) => arr.filter(val => val !== num);
console.log(removeChar([2, 5, 4, 3], 5));