Дополнительные методы объектов

Дополнительные методы объектов

Технический фундамент трансформации объектов

Большинство операций с объектами в JS строятся через переход:

  • объект → массив пар (Object.entries);
  • обработка массивными методами;
  • массив пар → объект (Object.fromEntries).
const src = { a: 1, b: 2 };
const doubled = Object.fromEntries(
  Object.entries(src).map(([k, v]) => [k, v * 2])
);

console.log(doubled); // { a: 2, b: 4 }

Ключевой момент: такой конвейер дает предсказуемую и читаемую обработку объектов.

Object.keys, Object.values, Object.entries

const user = { id: 1, name: 'Ann', active: true };

console.log(Object.keys(user));
console.log(Object.values(user));
console.log(Object.entries(user));

entries особенно удобен для перебора:

for (const [key, value] of Object.entries(user)) {
  console.log(`${key}: ${value}`);
}

Object.fromEntries

Делает обратное: из массива пар собирает объект.

const pairs = [
  ['theme', 'dark'],
  ['lang', 'ru'],
];

const settings = Object.fromEntries(pairs);
console.log(settings); // { theme: 'dark', lang: 'ru' }

Практичный паттерн: фильтрация полей объекта

const raw = { id: 1, name: 'Ann', password: '123' };

const safe = Object.fromEntries(
  Object.entries(raw).filter(([key]) => key !== 'password')
);

console.log(safe); // { id: 1, name: 'Ann' }

Проверь себя: почему этот паттерн часто используют перед отправкой данных на клиент?

Подсказка: чтобы гарантированно не «утекли» чувствительные поля (пароль, токены, служебные флаги) в UI/логи.

Object.hasOwn

Современный способ проверить собственное свойство:

console.log(Object.hasOwn(user, 'name')); // true
console.log(Object.hasOwn(user, 'toString')); // false

Микро-сценарии

  1. Сформировать массив полей для таблицы из объекта ответа API.
  2. Удалить служебные поля перед сериализацией.

Типичные ошибки

  • Путать entries (массив пар) и сам объект.
  • Забывать, что ключи после Object.keys всегда строки.
  • Использовать лишние циклы там, где хватает связки entries + fromEntries.
  • Не фильтровать чувствительные поля.

Краткий итог

  • keys/values/entries дают удобное представление объекта.
  • fromEntries собирает объект обратно.
  • Через эти методы легко строить чистые трансформации.
  • Object.hasOwn проверяет собственные свойства.
  • Это базовый инструмент для работы с данными API.