JavaScript: метод filter (), возвращающий оригинальный массив и не фильтрующий - PullRequest
0 голосов
/ 30 мая 2019

У меня есть следующий код ниже, используя функцию массива filter ().

arr = [12, 5, 8, 130, 44]

function test(arr) {
  return arr.filter((element) => {
    return element >= 10
  });
}

console.log(test(arr))

Мой код возвращает исходный массив ([12, 5, 8, 130, 44]) и не фильтруется вообще. Что я делаю неправильно?

Примечание: я хочу использовать для этого метод filter ().

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

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

let arr = [12, 5, 8, 130, 44]

function test(arr) {
  return arr.filter((element) => {
    return element >= 10
  });
}

// The filtered results
console.log('The filtered array', test(arr))

// The original array
console.log('The original array', arr)

Чтобы изменить массив на месте, вы можете использовать цикл while, а затем соединить элементы, подобные этому, что изменит массив на месте.

let arr = [12, 5, 8, 130, 44]

// Get the initial length of the array
let i = arr.length

// Loop backwards over the array as not to skip values when they get removed
while(--i) {
  if(arr[i] > 10) continue
  arr.splice(i, 1)
}

console.log(arr)

Вместо некоторого времени вы можете просто присвоить значение исходному массиву, перезаписав его исходным значением.

let arr = [12, 5, 8, 130, 44]

function test(arr) {
  return arr.filter((element) => {
    return element >= 10
  });
}

// Assign the result back to arr
arr = test(arr)

// The new value of arr
console.log(arr)
0 голосов
/ 30 мая 2019

В вашем коде не хватает нескольких вещей, но вы на правильном пути.Array.filter не меняет исходный массив.Установите переменную var filter и установите ее равной функциональному тесту.Затем console.log (filter (arr))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...