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