最近网页有一个目录转换的需求,要求使用罗马数字,目录比较简单层级在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] || "";
}
}