Дополнительные методы объектов
Дополнительные методы объектов
Технический фундамент трансформации объектов
Большинство операций с объектами в 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
Микро-сценарии
- Сформировать массив полей для таблицы из объекта ответа API.
- Удалить служебные поля перед сериализацией.
Типичные ошибки
- Путать
entries(массив пар) и сам объект. - Забывать, что ключи после
Object.keysвсегда строки. - Использовать лишние циклы там, где хватает связки
entries+fromEntries. - Не фильтровать чувствительные поля.
Краткий итог
keys/values/entriesдают удобное представление объекта.fromEntriesсобирает объект обратно.- Через эти методы легко строить чистые трансформации.
Object.hasOwnпроверяет собственные свойства.- Это базовый инструмент для работы с данными API.