Что возвращает Object.entries() и для чего это используют?

👨‍💻 Frontend Developer 🟠 Может встретиться 🎚️ Средний
#JavaScript #Объекты #База JS

Краткий ответ

Object.entries() возвращает массив пар ключ-значение из объекта. Каждая пара — это массив из двух элементов: первый элемент — ключ, второй — значение. Удобно для преобразования объекта в Map или для перебора с деструктуризацией.

const user = { name: 'Иван', age: 25 };
const entries = Object.entries(user);
console.log(entries); // [['name', 'Иван'], ['age', 25]]

Полный ответ

Object.entries() — это метод, который превращает объект в массив пар ключ-значение. Это очень удобно, когда нужно работать с объектом как с набором пар.

Что возвращает Object.entries()

Возвращает массив массивов, где каждый внутренний массив содержит ключ и значение:

const user = { name: 'Иван', age: 25 };
const entries = Object.entries(user);
console.log(entries); // [['name', 'Иван'], ['age', 25]]

Как использовать возвращаемые пары

Преобразование в Map

const obj = { name: 'Иван', age: 25 };
const map = new Map(Object.entries(obj));
// Теперь можно использовать методы Map

Перебор с деструктуризацией

const user = { name: 'Иван', age: 25 };
 
for (let [key, value] of Object.entries(user)) {
  console.log(key, value); // name Иван, age 25
}

Простые примеры

Создание Map из объекта

const config = { 
  theme: 'dark', 
  lang: 'ru', 
  notifications: true 
};
 
const configMap = new Map(Object.entries(config));
console.log(configMap.get('theme')); // 'dark'

Поиск по парам

const users = { 
  '1': 'Иван', 
  '2': 'Петр', 
  '3': 'Мария' 
};
 
// Найти ключ по значению
const entries = Object.entries(users);
const found = entries.find(([key, value]) => value === 'Петр');
console.log(found[0]); // '2'

Важные особенности

1. Только собственные свойства

const obj = { name: 'Иван' };
// Не включает унаследованные методы типа toString
console.log(Object.entries(obj)); // [['name', 'Иван']]

2. Порядок как в for…in

const obj = { 3: 'три', 1: 'один', 2: 'два', a: 'буква' };
console.log(Object.entries(obj)); 
// [['1', 'один'], ['2', 'два'], ['3', 'три'], ['a', 'буква']]

Когда использовать Object.entries()

Для работы с Map

// Удобно создавать Map из объекта
const obj = { a: 1, b: 2 };
const map = new Map(Object.entries(obj));

Для фильтрации объектов

const obj = { a: 1, b: 2, c: 3 };
 
// Оставить только значения больше 1
const filtered = Object.fromEntries(
  Object.entries(obj).filter(([key, value]) => value > 1)
);
console.log(filtered); // { b: 2, c: 3 }

Частые ошибки

1. Ожидание объекта

// ❌ Думаем, что получим объект
const obj = { a: 1, b: 2 };
const result = Object.entries(obj);
console.log(result); // Массив массивов, не объект!
 
// ✅ Правильное понимание
console.log(Array.isArray(result)); // true
console.log(Array.isArray(result[0])); // true

2. Работа с необъектами

// ❌ Попытка использовать с примитивами
Object.entries(42); // Ошибка!
 
// ✅ Только с объектами
Object.entries({ value: 42 }); // [['value', 42]]

Простые правила

  1. Object.entries() — для получения пар ключ-значение
  2. Массив массивов — возвращает массив, где каждый элемент — пара [ключ, значение]
  3. Собственные — только собственные перечисляемые свойства
  4. Map — удобно для создания Map из объекта
  5. Деструктуризация — легко перебирать с [key, value]

Object.entries() полезен, когда нужно работать с объектом как с набором пар. Особенно удобно при преобразовании в Map или при переборе с деструктуризацией.


Хотите больше статей для подготовки к собеседованиям? Подписывайтесь на EasyAdvice, добавляйте сайт в закладки и совершенствуйтесь каждый день 💪