Как бы я фильтровал, используя filterBy для нескольких выбранных значений, и использовал mapBy для манипулирования массивом? - PullRequest
0 голосов
/ 31 октября 2018

в моем шаблоне у меня есть раскрывающийся список, в котором можно выбрать несколько значений. Пример, zoneNameOne, zoneNameTwo. Мой component.js имеет код, который будет фильтровать записи на основе нескольких значений, выбранных из раскрывающегося списка.

jobOrderCityNames: computed('selectedZoneOrCityName', 
 'jobOrders.@each.zoneName', 'jobOrders.@each.cityName', function() {
  let selectedZoneOrCityName = this.get('selectedZoneOrCityName');
  if (selectedZoneOrCityName) {
    return this.get('jobOrders').filterBy('zoneName', selectedZoneOrCityName).mapBy('cityName');
   } else {
    return [];
  }
}),

JobOrders возвращает массив объектов ниже. [{id: 123, type: "job-orders",…}, {id: 124, type: "job-orders",…}]

Моя проблема: I can't filter the array of objects on a multiple values selected from the dropdown. Please see the code above

Мой вопрос: How can I filter the array of objects on a multiple values and mapBy the property name?

Пожалуйста, помогите мне, любой ответ очень ценится.

1 Ответ

0 голосов
/ 31 октября 2018

Вместо filterBy вы можете использовать filter . Затем вы можете проверить, совпадает ли любое из свойств zoneName или cityName какого-либо элемента с вашим selectedZoneOrCityName для фильтрации. Таким образом, ваш код будет выглядеть так:

return this.get('jobOrders').filter((jobOrder) =>{
    return (jobOrder.zoneName === selectedZoneOrCityName) || (jobOrder.cityName === selectedZoneOrCityName);
  }
).mapBy('cityName');
...