编辑代码

const romanObj = [
    {
        key: 'I',
        value: 1
    },
    {
        key: 'V',
        value: 5
    },
    {
        key: 'X',
        value: 10
    },
    {
        key: 'L',
        value: 50
    },
    {
        key: 'C',
        value: 100
    },
    {
        key: 'D',
        value: 500
    },
    {
        key: 'M',
        value: 1000
    },
] 
const keyEnum = romanObj.map(v => v.key);

function getCharIndex(char) {
    return keyEnum.indexOf(char);
}

function getCharValue(char) {
    return romanObj.find(v => v.key === char).value;
}

function getEachRomanCount(char) {
    let sum = 0;
    for(let i = 0; i<char.length; i++) {
        sum += getCharValue(char.charAt(i));
        if(getCharIndex(char.charAt(i)) < getCharIndex(char.charAt(i+1))) {
            sum = getCharValue(char.charAt(i+1)) - sum;
            break;
        }
    }
    return sum;
}

/**
 * @param {string} s
 * @return {number}
 */
var romanToInt = function(s) {

   let eachDigit = [];
   let lastIndex = s.length;
   for(let i = s.length - 1; i >= 0; --i) {
       if(getCharIndex(s.charAt(i)) < getCharIndex(s.charAt(i - 1)) || i === 0) {
           const digestChar = s.slice(i, lastIndex);
           eachDigit.push(digestChar);
           lastIndex = i;
       }
   }
   return eachDigit.reduce((pre, curr) => pre + getEachRomanCount(curr), 0);
};