返回

算法:Roman Numeral Converter




Q: 将给定的数字转换成罗马数字。
所有返回的 罗马数字 都应该是大写形式。

	 function convert(num) {
  	 var nums = [1000,900,500,400,100,90,50,40,10,9,5,4,1];
  	 var romans =["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"];
  	 var str = '';
  	 
//给定数字拆分为千位、百位、十位、个位,然后再由大至小依次进行拼接。 //对 nums 的每一项进行遍历,每当传入的 num 大于或等于当前项时, //将其对应的罗马数字推入之前声明的字符串,并把 num 值减去当前符合条件的数值。

nums.forEach(function(value,index,nums){ while(num >= value){ str += romans[index]; num -= value; } }); return str; } convert(1000);
>> M

参考Array.prototype.forEach()

	 function convert(num) {
   	 var nums = [1000,900,500,400,100,90,50,40,10,9,5,4,1];
 	 var romans =["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"];
  	 var str = '';
	 
//改写一下
for (var i=0;i<nums.length;i++){ while(num >= nums[i]){ str += romans[i]; num -= nums[i]; } } return str; } convert(1234);
>> MCCXXXIV

推酷:Roman Numeral Converter(算法)