From 94b27c9a02f2709ca220c38c65807d0502f0da76 Mon Sep 17 00:00:00 2001 From: Daniel Huigens Date: Fri, 27 Apr 2018 12:08:49 +0200 Subject: [PATCH] Don't repeatedly loop enums in enums.read --- src/enums.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/enums.js b/src/enums.js index b4ca9d5e..8e152b08 100644 --- a/src/enums.js +++ b/src/enums.js @@ -2,6 +2,8 @@ * @module enums */ +const byValue = Symbol('byValue'); + export default { /** Maps curve names under various standards to one @@ -456,10 +458,15 @@ export default { /** Converts from an integer to string. */ read: function(type, e) { - for (const i in type) { - if (type[i] === parseInt(e, 10)) { - return i; - } + if (!type[byValue]) { + type[byValue] = []; + Object.entries(type).forEach(([key, value]) => { + type[byValue][value] = key; + }); + } + + if (type[byValue][e] !== undefined) { + return type[byValue][e]; } throw new Error('Invalid enum value.');