IMO Це найпростіший спосіб досягти того, що ви шукаєте:
let { prop1, prop2, prop3 } = someObject;
let data = { prop1, prop2, prop3 };
// data === { prop1: someObject.prop1, ... }
В основному, деструктуруйте на змінні, а потім використовуйте скорочення ініціалізатора для створення нового об'єкта. Не потрібноObject.assign
Я думаю, що це найбільш читаний спосіб. Ви можете цим вибрати точний реквізит із того, someObject
що потрібно. Якщо у вас є існуючий об'єкт, на який ви просто хочете об'єднати реквізит, зробіть щось подібне:
let { prop1, prop2, prop3 } = someObject;
let data = Object.assign(otherObject, { prop1, prop2, prop3 });
// Makes a new copy, or...
Object.assign(otherObject, { prop1, prop2, prop3 });
// Merges into otherObject
Ще один, напевно, чистіший спосіб його написання:
let { prop1, prop2, prop3 } = someObject;
let newObject = { prop1, prop2, prop3 };
// Merges your selected props into otherObject
Object.assign(otherObject, newObject);
Я POST
дуже часто використовую це для запитів, де мені потрібно лише кілька фрагментів дискретних даних. Але я погоджуюся, що для цього повинен бути один лайнер.
EDIT: PS -
Нещодавно я дізнався, що ви можете використовувати ультра-руйнування на першому кроці, щоб витягнути вкладені значення зі складних об'єктів! Наприклад...
let { prop1,
prop2: { somethingDeeper },
prop3: {
nested1: {
nested2
}
} = someObject;
let data = { prop1, somethingDeeper, nested2 };
Крім того, ви можете використовувати оператор розповсюдження замість Object.assign під час створення нового об’єкта:
const { prop1, prop2, prop3 } = someObject;
let finalObject = {...otherObject, prop1, prop2, prop3 };
Або ...
const { prop1, prop2, prop3 } = someObject;
const intermediateObject = { prop1, prop2, prop3 };
const finalObject = {...otherObject, ...intermediateObject };
Object.assign(oof, foo)