JSFiddle - React, Tailwind, and code Playground

by Nicolas PUJOL

JavaScript

var line = "negative seventeen million thirty five";
var l = line.split(" ");
var o = {
    "negative": {"v": "-", "g": -1},
   
    "zero": {"v": 0, "g": 0},
    "one": {"v": 1, "g": 0},
    "two": {"v": 2, "g": 0},
    "three": {"v": 3, "g": 0},
    "four": {"v": 4, "g": 0},
    "five": {"v": 5, "g": 0},
    "six": {"v": 6, "g": 0},
    "seven": {"v": 7, "g": 0},
    "eight": {"v": 8, "g": 0},
    "nine": {"v": 9, "g": 0},
  
    "ten": {"v": 10, "g": 1},
    "eleven": {"v": 11, "g": 1},
    "twelve": {"v": 12, "g": 1},
    "thirteen": {"v": 13, "g": 1},
    "fourteen": {"v": 14, "g": 1},
    "fifteen": {"v": 15, "g": 1},
    "sixteen": {"v": 16, "g": 1},
    "seventeen": {"v": 17, "g": 1},
    "eighteen": {"v": 18, "g": 1},
    "nineteen": {"v": 19, "g": 1},
 
    "twenty": {"v": 20, "g": 2},
    "thirty": {"v": 30, "g": 2},
    "forty": {"v": 40, "g": 2},
    "fifty": {"v": 50, "g": 2},
    "sixty": {"v": 60, "g": 2},
    "seventy": {"v": 70, "g": 2},
    "eighty": {"v": 80, "g": 2},
    "ninety": {"v": 90, "g": 2},

    "hundred": {"v": 100, "g": 3},
    "thousand": {"v": 1000, "g": 3},
    "million": {"v": 1000000, "g": 3}
};
var s = 0;
var f = false;
for (var i = 0; i < l.length; i++) {
	if (o[l[i]].g === -1 || f) {
    	f = false;
    	continue;
	}
    if ((o[l[i]].g === 0 || o[l[i]].g === 1) && o[l[i+1]] && o[l[i+1]].g === 3) {
    	s += o[l[i]].v*o[l[i+1]].v;
        f=true;
   		continue;
    }
    s += o[l[i]].v;
}
if (o[l[0]].g === -1 && s > 0) {
    s *= -1;
}
console.log(s);