最近网页有一个目录转换的需求,要求使用罗马数字,目录比较简单层级在10以下,首先最直观的方法,使用控制流中的多分支
toRomanNumber(number){
let numChar = number + "";
switch(numChar){
case "0": ""; break;
case "1": "Ⅰ"; break;
case "2": "Ⅱ"; break;
case "3": "Ⅲ"; break;
case "4": "Ⅳ"; break;
case "5": "Ⅴ"; break;
case "6": "Ⅵ"; break;
case "7": "Ⅶ"; break;
case "8": "Ⅷ"; break;
case "9": "Ⅸ"; break;
default: "";
}
}
javascript对象的键值形式,允许你这样实现
toRomanNumber(number){
let numChar = number + "";
const maps = {"0":"", "1":"Ⅰ", "2":"Ⅱ", "3":"Ⅲ", "4":"Ⅳ", "5":"Ⅴ", "6":"Ⅵ", "7":"Ⅶ", "8":"Ⅷ", "9":"Ⅸ"};
return maps[numChar] || "";
}
有没有优化的方法呢,数字是自然序列,提到自然序列能想到什么,是不是联想到了数组呢,只不过要把数组前移一位
toRomanNumber(number){
let number = Number(number);
const array = ["","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ"];
if(isNaN(number)){
return "";
}else{
return array[number] || "";
}
}
本文探讨了将数字转换为罗马数字的几种方法,从最初的基于switch语句的控制流实现,过渡到使用JavaScript对象的键值映射,最后提出使用数组的优化方案。通过数组直接索引,简化了代码并提高了效率,适用于不超过10级的目录编号转换需求。
3852

被折叠的 条评论
为什么被折叠?



