Вроде везде в документации сравнивают Map c объектами но когда я вывел в консоль Map:
1) Здесь элементы проиндексированны так же как и в массиве 0, 1, 2
2) Здесь есть вот такая штука [[Entries]]. А entries возвращает массив свойств объекта
Тогда Map это объект или массив? Или он объект но возвращает массив?
Map - это объект.
JavaScript массив - это тоже объект, так-то, но с авто индексацией элементов. По сути, массивы в JS это экземпляры класса Array.
Отвечая конкретнее на Ваш вопрос, Map это по сути обыкновенный объект с различными методами помощниками. Вы можете и сами такой же сделать накидав методов.
Map это объект, объект не может ничего возвращать, возвращать могут его методы. Другое дело что в отличие от объекта, создаваемого как {}, объект Map итерируемый. Итерация по нему происходит по парам ключ-значение.
В js все объект, что не является примитивом (простые объекты, экземпляры классов, массивы, Map, Set, функции).
Так что да, Map это объект.
А вот массивом он не является, ибоArray.isArray(new Map()) // false
Здесь есть вот такая штука [[Entries]]. А entries возвращает массив свойств объекта
Вообще-то entries возвращает итератор. Итератор - это тоже не массив.