Фильтрация массива?

248
05 января 2018, 00:59

var auto = [{ 
    marka: "BMW", 
    model: "4k", 
    cuzov: "A", 
  }, 
  { 
    marka: "Merc", 
    model: "4k", 
    cuzov: "B", 
  }, 
  { 
    marka: "Audi", 
    model: "3k", 
    cuzov: "C", 
  }, 
  { 
    marka: "Toyota", 
    model: "1k", 
    cuzov: "D", 
  }, 
  { 
    marka: "Lexus", 
    model: "2k", 
    cuzov: "E", 
  }, 
  { 
    marka: "Rang", 
    model: "3k", 
    cuzov: "F", 
  }, 
  { 
    marka: "BMW", 
    model: "4k", 
    cuzov: "G", 
  }, 
  { 
    marka: "BMW", 
    model: "2k", 
    cuzov: "Y", 
 
  }, 
  { 
    marka: "Audi", 
    model: "3k", 
    cuzov: "U", 
  } 
] 
var marka = ["Audi", "Rang", "Merc"]; 
var model = ["4k", "2k", "3k"]; 
var rez1 = auto.filter(x => (marka.includes(x.marka) && model.includes(x.model) && 
  cuzov.includes(x.cuzov))); 
console.log(rez1);

Фильтрую массив в соответствии с параметрами которые задал условно "Пользователь".
Такой вопрос. А что если "пользователь", скажем решит очистить массив model. Ну то есть выберет так, что должны показываться все модели. Тогда фильтр уже не будет работать. Что делать?

Answer 1
var rez1 = auto.filter(x => (
  marka.includes(x.marka) && 
  (model.length == 0 || model.includes(x.model)) && 
  cuzov.includes(x.cuzov)
));

Если массив model "очищен", то есть пуст, его длина равна нулю. В этом случае x.model не играет роли, и проверка модели (вторая строчка в условиях) будет возвращать true.

READ ALSO
react-dates закрыть календарь

react-dates закрыть календарь

Кто в курсе как можно в любой удобный момент закрыть DateRangePicker, к примеру после клика по добавленной кнопке внутрь календаря "Reset Dates" которая...

218
Помогите решить простую задачу

Помогите решить простую задачу

Нужно написать код который посчитает сколько 9 в числеНапример дано число 929, должно вывести 2

240
webpack: Module not found

webpack: Module not found

ЗдравствуйтеТолько соприкоснулась с webpack и не совсем удачно :) Установила webpack через npm:

279