变换2与一个非常相似的功能



我有这两个功能,非常非常相似:

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])
    }));
}

相关内容

最新更新