Фильтруйте JSON, используя более одной опции - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть JSON:

location_filter = [{ title: "My Library", type: "library"},
      { title: "My Parking", type: "parking" },
      { title: "My Info", type: "info" }]

И у меня есть несколько раскрывающихся меню с тремя опциями: "информация", "парковка", "библиотека".

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

Я знаю, как использовать фильтр только с одним предметом.

Мой вопрос: как я могу использовать более одного предмета?

splitFilter(array){
    var arr = array.split(',');
    return arr;
  }


filter(selection) {

    let stringSplit = this.splitFilter(selection.toString());

        this.location_filter = JSON.parse(JSON.stringify(this.locations));

        this.location_filter = this.location_filter.filter((item) => {
            return item.type === selection;
        });

    this.loadMap(this.location_filter);
}

Я уже разделяю строку с помощью функции splitFilter ();

Может быть, петля?

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете проверить с помощью Array#includes.

this.location_filter = this.location_filter.filter(({ type }) => selection.includes(type));

Или с ES5 возьмите Array#indexOf и проверьте, если нет -1 для не найденного предмета.

this.location_filter = this.location_filter.filter((item) => {
    return selection.indexOf(item.type) !== -1;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...