---
sidebar_position: 8
---

# keys, values, entries
.keys(), .values(), .entries(). Универсальные методы, и существует общее соглашение использовать их для структур данных. Если бы мы делали собственную структуру данных, нам также следовало бы их реализовать.
Методы поддерживаются для структур:
- Map
- Set
- Array

### Object.keys, values, entries
Для простых объектов доступны следующие методы:
- **`Object.keys(obj)`** – возвращает массив ключей.
- **`Object.values(obj)`** – возвращает массив значений.
- **`Object.entries(obj)`** – возвращает массив пар [ключ, значение].

Объекты являются основой всех сложных структур в JavaScript. У нас может быть объект `data`, который реализует свой собственный метод data.values(). И мы всё ещё можем применять к нему стандартный метод `Object.values(data)`.
```js
let user = {
  name: "John",
  age: 30
};
```
- `Object.keys(user) = ["name", "age"]`
- `Object.values(user) = ["John", 30]`
- `Object.entries(user) = [ ["name","John"], ["age",30] ]`

💥 ***Object.keys/values/entries игнорируют символьные свойства***\
Так же, как и цикл for..in, эти методы игнорируют свойства, использующие Symbol(...) в качестве ключей.

### Трансформации объекта
У объектов нет множества методов, которые есть в массивах, например map, filter и других.

Если мы хотели бы их применить, то можно использовать Object.entries с последующим вызовом Object.fromEntries:
1. Вызов **`Object.entries(obj)`** возвращает массив пар ключ/значение для obj.
2. На нём вызываем методы массива, например, **`map`**.
3. Используем `Object.fromEntries(array)` на результате, чтобы преобразовать его обратно в объект.

🚀 **Источник: [https://learn.javascript.ru/keys-values-entries](https://learn.javascript.ru/keys-values-entries)**