i totally forgot about this interaction between 'float is the only number type' and 'string is the only key type'. at least sometimes the numbers are known-int
They added Map as a proper key-value data structure so it's a good idea to ban using objects as map data structure now, just like banning any usage of `var` (using only let/const) with "use strict" to prevent implicit usage of that nonsense broken form of scoping with hoisting.
Except it's not a proper key-value data structure, arrays and objects used as keys in one do the lookup via the use of the `==` operator. So it might work, until it doesn't because you got a key in from a different path and then nothing works.
I don't think it's reasonable to blame Map for objects implementing equality as reference equality. It would be worse if it deviated from the standard definition of equality in the language. Arrays and objects are what need to be fixed, not Map using `===` (it doesn't use `==`).