JavaScript - Фильтрация индекса массива с помощью .includes () - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь отфильтровать массив data и получить результат newData с фильтрацией индекса, который включает заголовок «Туризм»

Я использую метод .filter и использую .includes но при этом возвращаемое значение newData включает «Туризм», хотя я ставлю галочку для возврата всех значений, которые не включают это.

Вот пример кода того, с чем я работаю:

let data = [ { title: "Vacation", revenue: 23421 }, { title: "Hospitals", revenue: 34212 }, { title: "Tourism", revenue: 42124 }, {title: "International Tourism", revenue: 87321 } ]


newData = data.filter(function (item) {
  return !item.title.includes('Tourism') || item.title.includes('Vacation')
})

console.log(newData)

Я ожидаю, что возвращаемые значения не будут включать "Tourism" and "International Tourism" на основе .includes, возвращающего все, что не включает «Туризм». Правильно ли я подхожу к этому сценарию? Мое текущее значение возвращает все в массиве независимо от моей .includes проверки

1 Ответ

2 голосов
/ 13 июля 2020

includes - это метод , поэтому это функция, которая принимает аргумент, в частности значение для проверки в строке или массиве, для которого она вызывается. Вместо этого используйте .includes(value):

let data = [{
  title: "Vacation",
  revenue: 23421
}, {
  title: "Hospitals",
  revenue: 34212
}, {
  title: "Tourism",
  revenue: 42124
}, {
  title: "International Tourism",
  revenue: 87321
}];

newData = data.filter(
  item => !item.title.includes('Tourism')
);

console.log(newData);

Для вашего редактирования, если вы хотите отфильтровать несколько значений, вы можете использовать несколько способов сказать то же самое. Рассмотрим !includesTitle() && !includesVacation() («не включает заголовок и не включает отпуск») и !(includesTitle() || includesVacation) («не включает заголовок или местоположение»), которые семантически эквивалентны:

let data = [ { title: "Vacation", revenue: 23421 }, { title: "Hospitals", revenue: 34212 }, { title: "Tourism", revenue: 42124 }, {title: "International Tourism", revenue: 87321 } ];

// filter for items where item doesn't include 'tourism' or 'vacation'
newData = data.filter(
  // using ! to exclude any that match:
  item => !(
    // Tourism, OR
    item.title.includes('Tourism') ||
    // Vacation
    item.title.includes('Vacation')
  )
);

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