Давайте отойдём от отдельных структур данных и поговорим об их переборе вообще.
В предыдущей главе мы видели методы
map.keys(), map.values(), map.entries().Это универсальные методы, и существует общее соглашение использовать их для структур данных. Если бы мы делали собственную структуру данных, нам также следовало бы их реализовать.
Методы поддерживаются для структур:
MapSetArrayПростые объекты также можно перебирать похожими методами, но синтаксис немного отличается.
Object.keys, values, entries
Для простых объектов доступны следующие методы:
Object.keys(obj) – возвращает массив ключей.
Object.values(obj) – возвращает массив значений.
Object.entries(obj) – возвращает массив пар
[ключ, значение].Обратите внимание на различия (по сравнению с
map, например):Map Object Синтаксис вызова
map.keys() Object.keys(obj), не obj.keys() Возвращает перебираемый объект «реальный» массив Первое отличие в том, что мы должны вызвать Object.keys(obj), а не obj.keys().Почему так? Основная причина – гибкость. Помните, что объекты являются основой всех сложных структур в JavaScript. У нас может быть объект
data, который реализует свой собственный метод data.values(). И мы всё ещё можем применять к нему стандартный метод Object.values(data).Второе отличие в том, что методы вида
Object.* возвращают «реальные» массивы, а не просто итерируемые объекты. Это в основном по историческим причинам.[ Полная статья... ]