const numberMap = new Map([
["one", 1],
["two", 2],
["three", 3],
["four", 4],
["five", 5],
["six", 6],
["seven", 7],
["eight", 8],
["nine", 9],
["ten", 10],
["eleven", 11],
["twelve", 12],
["thirteen", 13],
["fourteen", 14],
["fifteen", 15],
["sixteen", 16],
["seventeen", 17],
["eighteen", 18],
["nineteen", 19],
["twenty", 20],
["twenty-one", 21],
["twenty-two", 22],
["twenty-three", 23],
["twenty-four", 24],
["twenty-five", 25],
["twenty-six", 26],
["twenty-seven", 27],
["twenty-eight", 28],
["twenty-nine", 29],
["thirty", 30],
["thirty-one", 31],
["thirty-two", 32],
["thirty-three", 33],
["thirty-four", 34],
["thirty-five", 35],
["thirty-six", 36],
["thirty-seven", 37],
["thirty-eight", 38],
["thirty-nine", 39],
["forty", 40],
["forty-one", 41],
["forty-two", 42],
["forty-three", 43],
["forty-four", 44],
["forty-five", 45],
["forty-six", 46],
["forty-seven", 47],
["forty-eight", 48],
["forty-nine", 49],
["fifty", 50],
["fifty-one", 51],
["fifty-two", 52],
["fifty-three", 53],
["fifty-four", 54],
["fifty-five", 55],
["fifty-six", 56],
["fifty-seven", 57],
["fifty-eight", 58],
["fifty-nine", 59],
["sixty", 60],
["sixty-one", 61],
["sixty-two", 62],
["sixty-three", 63],
["sixty-four", 64],
["sixty-five", 65],
["sixty-six", 66],
["sixty-seven", 67],
["sixty-eight", 68],
["sixty-nine", 69],
["seventy", 70],
["seventy-one", 71],
["seventy-two", 72],
["seventy-three", 73],
["seventy-four", 74],
["seventy-five", 75],
["seventy-six", 76],
["seventy-seven", 77],
["seventy-eight", 78],
["seventy-nine", 79],
["eighty", 80],
["eighty-one", 81],
["eighty-two", 82],
["eighty-three", 83],
["eighty-four", 84],
["eighty-five", 85],
["eighty-six", 86],
["eighty-seven", 87],
["eighty-eight", 88],
["eighty-nine", 89],
["ninety", 90],
["ninety-one", 91],
["ninety-two", 92],
["ninety-three", 93],
["ninety-four", 94],
["ninety-five", 95],
["ninety-six", 96],
["ninety-seven", 97],
["ninety-eight", 98],
["ninety-nine", 99]
]);
function getNumberValue(word) {
switch (word) {
case "one": return 1;
case "two": return 2;
case "three": return 3;
case "four": return 4;
case "five": return 5;
case "six": return 6;
case "seven": return 7;
case "eight": return 8;
case "nine": return 9;
case "ten": return 10;
case "eleven": return 11;
case "twelve": return 12;
case "thirteen": return 13;
case "fourteen": return 14;
case "fifteen": return 15;
case "sixteen": return 16;
case "seventeen": return 17;
case "eighteen": return 18;
case "nineteen": return 19;
case "twenty": return 20;
case "twenty-one": return 21;
case "twenty-two": return 22;
case "twenty-three": return 23;
case "twenty-four": return 24;
case "twenty-five": return 25;
case "twenty-six": return 26;
case "twenty-seven": return 27;
case "twenty-eight": return 28;
case "twenty-nine": return 29;
case "thirty": return 30;
case "thirty-one": return 31;
case "thirty-two": return 32;
case "thirty-three": return 33;
case "thirty-four": return 34;
case "thirty-five": return 35;
case "thirty-six": return 36;
case "thirty-seven": return 37;
case "thirty-eight": return 38;
case "thirty-nine": return 39;
case "forty": return 40;
case "forty-one": return 41;
case "forty-two": return 42;
case "forty-three": return 43;
case "forty-four": return 44;
case "forty-five": return 45;
case "forty-six": return 46;
case "forty-seven": return 47;
case "forty-eight": return 48;
case "forty-nine": return 49;
case "fifty": return 50;
case "fifty-one": return 51;
case "fifty-two": return 52;
case "fifty-three": return 53;
case "fifty-four": return 54;
case "fifty-five": return 55;
case "fifty-six": return 56;
case "fifty-seven": return 57;
case "fifty-eight": return 58;
case "fifty-nine": return 59;
case "sixty": return 60;
case "sixty-one": return 61;
case "sixty-two": return 62;
case "sixty-three": return 63;
case "sixty-four": return 64;
case "sixty-five": return 65;
case "sixty-six": return 66;
case "sixty-seven": return 67;
case "sixty-eight": return 68;
case "sixty-nine": return 69;
case "seventy": return 70;
case "seventy-one": return 71;
case "seventy-two": return 72;
case "seventy-three": return 73;
case "seventy-four": return 74;
case "seventy-five": return 75;
case "seventy-six": return 76;
case "seventy-seven": return 77;
case "seventy-eight": return 78;
case "seventy-nine": return 79;
case "eighty": return 80;
case "eighty-one": return 81;
case "eighty-two": return 82;
case "eighty-three": return 83;
case "eighty-four": return 84;
case "eighty-five": return 85;
case "eighty-six": return 86;
case "eighty-seven": return 87;
case "eighty-eight": return 88;
case "eighty-nine": return 89;
case "ninety": return 90;
case "ninety-one": return 91;
case "ninety-two": return 92;
case "ninety-three": return 93;
case "ninety-four": return 94;
case "ninety-five": return 95;
case "ninety-six": return 96;
case "ninety-seven": return 97;
case "ninety-eight": return 98;
case "ninety-nine": return 99;
default: return null;
}
}
numberMap.get('one');
numberMap.get('two');
numberMap.get('three');
numberMap.get('four');
numberMap.get('five');
numberMap.get('six');
numberMap.get('seven');
numberMap.get('eight');
numberMap.get('nine');
numberMap.get('ten');
numberMap.get('eleven');
numberMap.get('twelve');
numberMap.get('thirteen');
numberMap.get('fourteen');
numberMap.get('fifteen');
numberMap.get('sixteen');
numberMap.get('seventeen');
numberMap.get('eighteen');
numberMap.get('nineteen');
numberMap.get('twenty');
numberMap.get('twenty-one');
numberMap.get('twenty-two');
numberMap.get('twenty-three');
numberMap.get('twenty-four');
numberMap.get('twenty-five');
numberMap.get('twenty-six');
numberMap.get('twenty-seven');
numberMap.get('twenty-eight');
numberMap.get('twenty-nine');
numberMap.get('thirty');
numberMap.get('thirty-one');
numberMap.get('thirty-two');
numberMap.get('thirty-three');
numberMap.get('thirty-four');
numberMap.get('thirty-five');
numberMap.get('thirty-six');
numberMap.get('thirty-seven');
numberMap.get('thirty-eight');
numberMap.get('thirty-nine');
numberMap.get('forty');
numberMap.get('forty-one');
numberMap.get('forty-two');
numberMap.get('forty-three');
numberMap.get('forty-four');
numberMap.get('forty-five');
numberMap.get('forty-six');
numberMap.get('forty-seven');
numberMap.get('forty-eight');
numberMap.get('forty-nine');
numberMap.get('fifty');
numberMap.get('fifty-one');
numberMap.get('fifty-two');
numberMap.get('fifty-three');
numberMap.get('fifty-four');
numberMap.get('fifty-five');
numberMap.get('fifty-six');
numberMap.get('fifty-seven');
numberMap.get('fifty-eight');
numberMap.get('fifty-nine');
numberMap.get('sixty');
numberMap.get('sixty-one');
numberMap.get('sixty-two');
numberMap.get('sixty-three');
numberMap.get('sixty-four');
numberMap.get('sixty-five');
numberMap.get('sixty-six');
numberMap.get('sixty-seven');
numberMap.get('sixty-eight');
numberMap.get('sixty-nine');
numberMap.get('seventy');
numberMap.get('seventy-one');
numberMap.get('seventy-two');
numberMap.get('seventy-three');
numberMap.get('seventy-four');
numberMap.get('seventy-five');
numberMap.get('seventy-six');
numberMap.get('seventy-seven');
numberMap.get('seventy-eight');
numberMap.get('seventy-nine');
numberMap.get('eighty');
numberMap.get('eighty-one');
numberMap.get('eighty-two');
numberMap.get('eighty-three');
numberMap.get('eighty-four');
numberMap.get('eighty-five');
numberMap.get('eighty-six');
numberMap.get('eighty-seven');
numberMap.get('eighty-eight');
numberMap.get('eighty-nine');
numberMap.get('ninety');
numberMap.get('ninety-one');
numberMap.get('ninety-two');
numberMap.get('ninety-three');
numberMap.get('ninety-four');
numberMap.get('ninety-five');
numberMap.get('ninety-six');
numberMap.get('ninety-seven');
numberMap.get('ninety-eight');
numberMap.get('ninety-nine');
getNumberValue('one');
getNumberValue('two');
getNumberValue('three');
getNumberValue('four');
getNumberValue('five');
getNumberValue('six');
getNumberValue('seven');
getNumberValue('eight');
getNumberValue('nine');
getNumberValue('ten');
getNumberValue('eleven');
getNumberValue('twelve');
getNumberValue('thirteen');
getNumberValue('fourteen');
getNumberValue('fifteen');
getNumberValue('sixteen');
getNumberValue('seventeen');
getNumberValue('eighteen');
getNumberValue('nineteen');
getNumberValue('twenty');
getNumberValue('twenty-one');
getNumberValue('twenty-two');
getNumberValue('twenty-three');
getNumberValue('twenty-four');
getNumberValue('twenty-five');
getNumberValue('twenty-six');
getNumberValue('twenty-seven');
getNumberValue('twenty-eight');
getNumberValue('twenty-nine');
getNumberValue('thirty');
getNumberValue('thirty-one');
getNumberValue('thirty-two');
getNumberValue('thirty-three');
getNumberValue('thirty-four');
getNumberValue('thirty-five');
getNumberValue('thirty-six');
getNumberValue('thirty-seven');
getNumberValue('thirty-eight');
getNumberValue('thirty-nine');
getNumberValue('forty');
getNumberValue('forty-one');
getNumberValue('forty-two');
getNumberValue('forty-three');
getNumberValue('forty-four');
getNumberValue('forty-five');
getNumberValue('forty-six');
getNumberValue('forty-seven');
getNumberValue('forty-eight');
getNumberValue('forty-nine');
getNumberValue('fifty');
getNumberValue('fifty-one');
getNumberValue('fifty-two');
getNumberValue('fifty-three');
getNumberValue('fifty-four');
getNumberValue('fifty-five');
getNumberValue('fifty-six');
getNumberValue('fifty-seven');
getNumberValue('fifty-eight');
getNumberValue('fifty-nine');
getNumberValue('sixty');
getNumberValue('sixty-one');
getNumberValue('sixty-two');
getNumberValue('sixty-three');
getNumberValue('sixty-four');
getNumberValue('sixty-five');
getNumberValue('sixty-six');
getNumberValue('sixty-seven');
getNumberValue('sixty-eight');
getNumberValue('sixty-nine');
getNumberValue('seventy');
getNumberValue('seventy-one');
getNumberValue('seventy-two');
getNumberValue('seventy-three');
getNumberValue('seventy-four');
getNumberValue('seventy-five');
getNumberValue('seventy-six');
getNumberValue('seventy-seven');
getNumberValue('seventy-eight');
getNumberValue('seventy-nine');
getNumberValue('eighty');
getNumberValue('eighty-one');
getNumberValue('eighty-two');
getNumberValue('eighty-three');
getNumberValue('eighty-four');
getNumberValue('eighty-five');
getNumberValue('eighty-six');
getNumberValue('eighty-seven');
getNumberValue('eighty-eight');
getNumberValue('eighty-nine');
getNumberValue('ninety');
getNumberValue('ninety-one');
getNumberValue('ninety-two');
getNumberValue('ninety-three');
getNumberValue('ninety-four');
getNumberValue('ninety-five');
getNumberValue('ninety-six');
getNumberValue('ninety-seven');
getNumberValue('ninety-eight');
getNumberValue('ninety-nine');
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
Map | |
Switch |
Test name | Executions per second |
---|---|
Map | 80384040.0 Ops/sec |
Switch | 445163.7 Ops/sec |
This benchmark compares the performance of two different methods for retrieving numerical values based on string keys in JavaScript: using a Map
data structure versus using a switch
statement. Here's a breakdown of what is tested, the pros and cons of each approach, and alternative options.
Using Map
:
numberMap.get()
with string keys (like numberMap.get('one')
, numberMap.get('two')
, etc.).Using Switch
:
getNumberValue()
which uses a switch
statement for return values based on string input.Map
:Map
approach is significantly faster due to its underlying data structure, which allows for quicker key-value retrieval.Map
is straightforward.Map
:Map
might use more memory than a simple function with a switch
statement, especially for a large number of entries.Map
might be overkill.Switch
:switch
structure is clear for small, fixed datasets where specific conditions are checked.Switch
:switch
requires modifying code directly, leading to more maintenance.Map
. However, objects do not maintain the order of keys, which may be a consideration based on the requirement.In conclusion, while both methods can achieve the same functionality, the benchmark clearly demonstrates that using a Map
for key-value retrieval is vastly superior in terms of performance, especially for larger datasets. The switch
statement, while easy to read and maintain for small, static data mappings, becomes inefficient as the number of cases grows, making the Map
a generally better choice in scalable applications.