toChinese(val) { let chin_list = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; //所有的数值对应的汉字 let sn = parseInt(val) + 1; //这里由于我的后台是从0开始排序 if (sn <= 10) { return chin_list[sn - 1]; } else if (sn <= 100) { if (sn < 20) return '十' + chin_list[sn % 10 - 1]; if (sn % 10 == 0) return chin_list[Math.floor(sn / 10) - 1] + '十'; else return chin_list[Math.floor(sn / 10) - 1] + '十' + chin_list[sn % 10 - 1]; } else { //可以支持更多 } }优化这串代码
时间: 2024-04-19 07:23:38 浏览: 69
下面是对代码进行优化的建议:
1. 使用数组的索引来代替判断条件,避免重复判断。
2. 使用模板字符串来简化返回的字符串拼接。
3. 在函数开头添加参数校验,确保传入的值是有效的。
优化后的代码如下:
```javascript
function toChinese(val) {
const chin_list = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; // 所有的数值对应的汉字
const sn = parseInt(val) + 1; // 这里由于我的后台是从0开始排序
// 参数校验
if (isNaN(sn) || sn < 1 || sn > 100) {
return '暂不支持该数值';
}
if (sn <= 10) {
return chin_list[sn - 1];
} else if (sn <= 100) {
const tens = Math.floor(sn / 10);
const units = sn % 10;
if (units === 0) {
return `${chin_list[tens - 1]}十`;
} else {
return `${chin_list[tens - 1]}十${chin_list[units - 1]}`;
}
}
}
// 示例:
console.log(toChinese(0)); // 一
console.log(toChinese(9)); // 十
console.log(toChinese(10)); // 十一
console.log(toChinese(20)); // 二十一
console.log(toChinese(99)); // 九十九
```
注意:优化后的代码可能还存在其他潜在的问题,需要进行测试和验证。
阅读全文