如何使用filterBy过滤所选的多个值并使用mapBy操纵数组?

时间:2018-10-31 03:31:29

标签: ember.js ember-data

在我的模板上,我确实有一个下拉列表,可以选择多个值,例如zoneNameOnezoneNameTwo。我的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 :(得分:1)

您可以使用filter代替filterBy。然后,您可以检查任何一项的zoneNamecityName属性是否等于selectedZoneOrCityName进行过滤。因此,您的代码将类似于:

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