В этой главе мы рассмотрим методы Object.keys, values и entries. Мы уже говорили о таких методах, как map.keys(), map.values(), map.entries().
Эти методы универсальны и используются для структур данных. Каждый раз после создания структуры данных они также должны быть реализованы. Они в основном используются для Map, Set и Array.
Подобные методы поддерживаются и обычными объектами, хотя синтаксис немного отличается.
Определение методов Object.keys, values и entries
Как правило, для простых объектов можно использовать следующие методы:
- Для возврата массива ключей используется метод Object.keys(obj).
- Для возврата массива значений используется метод Object.values(obj).
- Для возврата массива пар [key, value], используется метод Object.entries(obj).
Есть существенные различия по сравнению с Map. Мы также рассмотрим их.
Первое отличие в том, что здесь нам нужно вызвать Object.keys(obj) а не obj.keys().
Основная причина - универсальность. Объекты считаются корнем всех сложных структур JavaScript.
Так, имея объект вроде data, который может выполнять свой собственный метод data.values(), вы также можете вызвать Object.values(data) на этом объекте. Другое важное отличие в том, что методы Object.* могут возвращать реальные массивы, а не итерируемые объекты.
Рассмотрим следующий пример:
Так, в приведенном выше примере у нас есть следующее:
- Object.keys(user) = ["name", "age"]
- Object.values(user) = ["Jack", 35]
- Object.entries(user) = [ ["name","Jack"], ["age",35] ]
Для перебора значений свойств можно использовать Object.values так:
Методы Object.keys/values/entries схожи с циклом for..in: оба они игнорируют свойства, которые используют Symbol(...) в качестве ключа.
Если вам нужны символы, вы можете использовать отдельный метод Object.getOwnPropertySymbols, возвращающий массив, состоящий только из символьных ключей.
Преобразование объектов
Обычно у объектов нет методов массивов (например, filter, map и так далее).
Если вы хотите их использовать, можно применить метод Object.entries, за которым следует Object.fromEntries.
Вот последовательность действий:
- Применяем Object.entries(obj) для получения массива пар значений/ключей из obj.
- Применяем методы массивов к массиву.
- Применяем Object.fromEntries(array) к получившемуся массиву, чтобы превратить его обратно в объект.
Вот пример:
Это средство позволяет делать полезные преобразования.
Время Викторины: Проверьте Свои Навыки!
отовы проверить свои знания? Погрузитесь в наши интерактивные викторины для более глубокого понимания и веселого способа закрепить знания.