优化代码const moment = require('moment');let latestObject;let latestEndTime = moment('00:00', 'HH:mm');arr.forEach(obj => { const { prepare, startTime } = obj; const endTime = moment(startTime, 'HH:mm').add(prepare, 'minutes'); if (endTime.isAfter(latestEndTime)) { latestEndTime = endTime; latestObject = obj; }});
时间: 2024-03-01 08:56:31 浏览: 77
代码优化方式
可以将代码进一步优化,使用reduce方法代替forEach方法,可以更清晰地表达求最大值的过程:
```javascript
const moment = require('moment');
const latestObject = arr.reduce((latest, obj) => {
const { prepare, startTime } = obj;
const endTime = moment(startTime, 'HH:mm').add(prepare, 'minutes');
const latestEndTime = moment(latest.startTime, 'HH:mm').add(latest.prepare, 'minutes');
return endTime.isAfter(latestEndTime) ? obj : latest;
}, { prepare: 0, startTime: '00:00' });
```
首先引入Moment.js库。然后使用reduce方法遍历数组,对于每个对象,使用Moment.js将开始时间转换为Moment对象,再调用add方法加上准备时间得到最终结束时间。然后将当前对象和最晚的对象比较,如果当前对象的结束时间比最晚的对象的结束时间还晚,就返回当前对象,否则返回最晚的对象。初始值为prepare为0,startTime为00:00的对象,确保reduce方法在数组为空时也能正确处理。
这种方法代码可读性更高,而且使用了函数式编程的思想,更符合现代JavaScript的潮流。
阅读全文