我有这两个功能,非常非常相似:
setEndTimes(pricerules: PriceRule[]) {
this.endTimes = [];
pricerules.forEach(pricerule => {
this.endTimes.push({
hour: Number(pricerule.endTime.split(':')[0]),
minute: Number(pricerule.endTime.split(':')[1])
});
});
}
setStartTimes(pricerules: PriceRule[]) {
this.startTimes = [];
pricerules.forEach(pricerule => {
this.startTimes.push({
hour: Number(pricerule.startTime.split(':')[0]),
minute: Number(pricerule.startTime.split(':')[1])
});
});
}
如何将这两个函数转换为一个?
您将在这种情况下动态属性,例如:
setTimes(pricerules: PriceRule[], _times: string) {
this[`${_times}s`] = [];
pricerules.forEach(pricerule => {
this[`${_times}s`].push({
hour: Number(pricerule[_times].split(':')[0]),
minute: Number(pricerule[_times].split(':')[1])
});
});
}
您可以重构将数组从pricerules
投射到函数的代码并设置属性并使用bracket notation
访问对象属性。
setEndTimes(pricerules: PriceRule[]) {
this.endTimes = returnTimes(pricerules, 'endTime');
}
setStartTimes(pricerules: PriceRule[]) {
this.startTimes = returnTimes(pricerules, 'startTime');
}
returnTimes(pricerules, time) {
return pricerules.map(x => (
{
hour: Number(x[time].split(':')[0]),
minute: Number(x[time].split(':')[1])
}));
}