我将如何使用 filterBy 对选定的多个值进行过滤并使用 mapBy 来操作数组?
How would I filter using filterBy for a multiple values selected and use mapBy to manipulate the array?
在我的模板上,我确实有一个下拉菜单,可能 select 多个值 例如,zoneNameOne
、zoneNameTwo
。我的 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
。然后您可以检查任何项目的 zoneName
或 cityName
属性是否等于您的 selectedZoneOrCityName
以进行过滤。所以你的代码将是这样的:
return this.get('jobOrders').filter((jobOrder) =>{
return (jobOrder.zoneName === selectedZoneOrCityName) || (jobOrder.cityName === selectedZoneOrCityName);
}
).mapBy('cityName');
在我的模板上,我确实有一个下拉菜单,可能 select 多个值 例如,zoneNameOne
、zoneNameTwo
。我的 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
。然后您可以检查任何项目的 zoneName
或 cityName
属性是否等于您的 selectedZoneOrCityName
以进行过滤。所以你的代码将是这样的:
return this.get('jobOrders').filter((jobOrder) =>{
return (jobOrder.zoneName === selectedZoneOrCityName) || (jobOrder.cityName === selectedZoneOrCityName);
}
).mapBy('cityName');