diff --git a/LayoutLink.js b/LayoutLink.js index 2e0d4e1..ac0ae98 100644 --- a/LayoutLink.js +++ b/LayoutLink.js @@ -117,12 +117,7 @@ class LayoutLink { } for (let hop of this.path) { - let links = this.linksByPos_.get(hop); - if (!links) { - links = []; - this.linksByPos_.set(hop, links); - } - links.push(this); + getOrSet(this.linksByPos_, hop, []).push(this); } console.log(iter); diff --git a/StringMap.js b/StringMap.js new file mode 100644 index 0000000..fee2aaa --- /dev/null +++ b/StringMap.js @@ -0,0 +1,17 @@ +class StringMap extends Map { + has(key) { + return super.has(key.toString()); + } + + get(key) { + return super.get(key.toString()); + } + + set(key, value) { + return super.set(key.toString(), value); + } + + delete(key) { + return super.delete(key.toString()); + } +} diff --git a/utils.js b/utils.js index 5643919..d047682 100644 --- a/utils.js +++ b/utils.js @@ -25,20 +25,4 @@ function intersects(set1, set2) { return false; } -class StringMap extends Map { - has(key) { - return super.has(key.toString()); - } - - get(key) { - return super.get(key.toString()); - } - - set(key, value) { - return super.set(key.toString(), value); - } - - delete(key) { - return super.delete(key.toString()); - } -} +