在我的模板上,我确实有一个下拉列表,可以选择多个值,例如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?
请帮助我,感谢您的答复。
答案 0 :(得分:1)
您可以使用filter代替filterBy
。然后,您可以检查任何一项的zoneName
或cityName
属性是否等于selectedZoneOrCityName
进行过滤。因此,您的代码将类似于:
return this.get('jobOrders').filter((jobOrder) =>{
return (jobOrder.zoneName === selectedZoneOrCityName) || (jobOrder.cityName === selectedZoneOrCityName);
}
).mapBy('cityName');