SOURCE

console 命令行工具 X clear

                    
>
console
/*
### 题目

罗马数字转整数。

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
字符 | 数值
---|---
I | 1
V | 5
X | 10
L | 50
C | 100
D | 500
M | 1000

例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

- I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
- X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 
- C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。

给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。

- 输入: "III",输出: 3
- 输入: "IV",输出: 4
- 输入: "IX",输出: 9
- 输入: "LVIII",输出: 58,解释: L = 50, V= 5, III = 3.
- 输入: "MCMXCIV",输出: 1994,解释: M = 1000, CM = 900, XC = 90, IV = 4.

*/

var romanToInt = function(s) {
    //先解构, 
    let awe = [],
    newnum = 0;
    awe['I'] = 1;
    awe['V'] = 5;
    awe['X'] = 10;
    awe['L'] = 50;
    awe['C'] = 100;
    awe['D'] = 500;
    awe['M'] = 1000;
    console.log(awe); // [I: 1, V: 5, X: 10, L: 50, C: 100, …]
    for (var i = 0; i < s.length; i++) {
        //先判断最后一位的后一位是否存在 
        if (!awe[s[i + 1]]) {
            newnum += awe[s[i]];
            break
        }
        //正常运算 
        if (awe[s[i]] >= awe[s[i + 1]]) {
            newnum += awe[s[i]];
        } else {
            //此位小于后位,加上后位进行运算,记得i+1 
            newnum = newnum + awe[s[i + 1]] - awe[s[i]];
            i++;
        }
    }
    return newnum
};


// var romanToInt = function(s) {
//     var roman = ["I","V","IV","X","L","C","D","M"];
//     var int = [1,5,4,10,50,100,500,1000];
//     var result = "";
//     for(var i = 0;i < roman.length;i++){
//         if(roman[i] == "")
//     }
//     if(){

//     }else{
//         result = s.split("")
//     }
//     console.log(typeof result)
//     var intArr =  result.map(function(x){
//         return int[roman.indexOf(x)]
        
//     });
//     return Number(intArr.join(""));
// };
console.log(romanToInt("III"));
console.log(romanToInt("IV"));
console.log(romanToInt("IX"));
console.log(romanToInt("LVIII"));