为了提高性能,使用数组来存储中文表示的天数,然后在循环结束后再将数组连接成一个字符串。这样可以减少字符串连接的次数,从而提高性能。
// 计算天数
calculateDays(startDate, endDate) {
const start = new Date(startDate);
const end = new Date(endDate);
const diffTime = Math.abs(end - start);
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
const chineseNumbers = ['', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
const chineseUnits = ['', '十', '百', '千'];
const chineseBigUnits = ['', '万', '亿', '万亿']; // 可以继续扩展更大的单位
const numStr = diffDays.toString();
let chineseArr = [];
for (let i = 0; i < numStr.length; i++) {
const digit = parseInt(numStr[i]);
const unit = chineseUnits[numStr.length - 1 - i];
if (digit !== 0) {
chineseArr.push(chineseNumbers[digit] + unit);
} else {
// 处理连续的零,避免出现多余的零
if (chineseArr[chineseArr.length - 1] !== chineseNumbers[0]) {
chineseArr.push(chineseNumbers[digit]);
}
}
// 添加大单位
if (i % 4 === 0 && i > 0) {
chineseArr.push(chineseBigUnits[i / 4]);
}
}
const chineseStr = chineseArr.join('');
return chineseStr;
},