Map ничего общего не имеют с массивами, они реализуют совершенно другую структуру данных -
хэш таблицу
От объектов так же есть отличия:
- У объектов в качестве ключа может быть только строка или символ, у Map - любой тип
- Map под капотом всегда представлены как OrderedHashMap (упорядоченная хэш таблица), объекты представлены той же структурой данных, но в отличии от Map после оптимизации могут быть представлены в виде обычных сишных структур, где нужное поле получается по смещению от указателя.
- Для манипуляции с объектами есть множество синтаксического сахара (вроде оператора in или spread (
...
) оператора), и оптимизатор знает об этом сахаре. У Map есть только его методы, с которыми оптимизатор может сделать не так уж и много (так как некоторые оптимизации не применимы к динамическому диспатчингу, ибо ведут к UB, а JS - язык с гарантированным отсутствием UB)