javascript罗马数字转换

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

free5156

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值