Многофункциональный фильтр диапазона - PullRequest
1 голос
/ 22 апреля 2020

Я пытаюсь отфильтровать массив объектов на основе их значения abw, которое является диапазоном. Теперь я могу фильтровать на основе одного выбора диапазона, но, похоже, не могу определить несколько вариантов выбора диапазона. Я пробовал много способов, но они, кажется, перекрывают друг друга. Любая помощь приветствуется.

Также параметры диапазона являются динамическими c, поэтому я не могу использовать stati c, если операторы else.

var selectedABW = [ [0, 5], [5, 10], [10,20], [20, 30] ] //dynamic data
var p2 = [{name: "dank", abw: 29}, {name: "jank", abw: 5}, {name: "bank", abw: 1000}]

 p2.filter(({ abw }) => {
       for (var item of this.selectedABW) {
          const range = this.getValuesFromABW(item);
            if (!(abw >= range[0] && abw <= range[1])) {
              return false;
            }
       }
       return true;
    });

Ожидаемый результат: [{ name: "dank", abw: 29}, {name: "jank", abw: 5}]

1 Ответ

0 голосов
/ 22 апреля 2020

Используйте тест .some, чтобы проверить, удовлетворяет ли какой-либо из элементов в selectedABW условию для свойства abw объекта:

var selectedABW = [ [0, 5], [5, 10], [10,20], [20, 30] ]
var p2 = [{name: "dank", abw: 29}, {name: "jank", abw: 5}, {name: "bank", abw: 1000}]

const result = p2.filter(
  ({ abw }) => selectedABW.some(
    ([low, high]) => abw >= low && abw <= high
  )
);
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...