Как взять из объекта только нужные поля
Короткий ответ
Деструктуризация забирает нужные поля, и вы кладёте их в новый объект:
const user = { id: 1, name: 'Anna', email: 'anna@example.com', password: 'secret' };
const { name, email } = user;
console.log(JSON.stringify({ name, email }));Результат:
{"name":"Anna","email":"anna@example.com"}Список ключей
Когда ключи заданы массивом, соберите объект через Object.fromEntries():
const pick = (object, keys) => Object.fromEntries(keys.filter((key) => key in object).map((key) => [key, object[key]]));
const user = { id: 1, name: 'Anna', email: 'anna@example.com', password: 'secret' };
console.log(JSON.stringify(pick(user, ['id', 'name', 'phone'])));Результат:
{"id":1,"name":"Anna"}По значениям
Отфильтруйте пары объекта, чтобы убрать, например, пустые значения:
const form = { name: 'Anna', phone: '', city: 'Rome', note: null };
const filled = Object.fromEntries(Object.entries(form).filter(([, value]) => value !== '' && value !== null));
console.log(JSON.stringify(filled));Результат:
{"name":"Anna","city":"Rome"}Частая ошибка
Без проверки key in object отсутствующие ключи станут свойствами со значением undefined:
const user = { name: 'Anna' };
const picked = Object.fromEntries(['name', 'phone'].map((key) => [key, user[key]]));
console.log(Object.keys(picked).join(', '));Результат:
name, phoneФункции из этого ответа
- Object.fromEntries — Создаёт объект из списка пар ключ — значение.
- Object.entries — Возвращает массив пар «имя свойства и значение».
- Destructuring assignment — Достаёт значения из массива или объекта в отдельные переменные.