我将如何使用 filterBy 对选定的多个值进行过滤并使用 mapBy 来操作数组?

How would I filter using filterBy for a multiple values selected and use mapBy to manipulate the array?

在我的模板上,我确实有一个下拉菜单,可能 select 多个值 例如,zoneNameOnezoneNameTwo。我的 component.js 有一个代码可以根据从下拉列表中 select 编辑的多个值过滤记录。

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 return 下面的对象数组。 [{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?

请帮助我,非常感谢任何回复。

您可以使用 filter 而不是 filterBy。然后您可以检查任何项目的 zoneNamecityName 属性是否等于您的 selectedZoneOrCityName 以进行过滤。所以你的代码将是这样的:

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