IMO ini adalah cara termudah untuk mencapai apa yang Anda cari:
let { prop1, prop2, prop3 } = someObject;
let data = { prop1, prop2, prop3 };
// data === { prop1: someObject.prop1, ... }
Pada dasarnya, perusakan menjadi variabel dan kemudian gunakan singkatan initializer untuk membuat objek baru. Tidak perluObject.assign
Saya pikir ini adalah cara yang paling mudah dibaca. Anda dapat memilih alat peraga yang tepat sesuai someObject
yang Anda inginkan. Jika Anda memiliki objek yang sudah ada dan ingin digabungkan dengan props, lakukan sesuatu seperti ini:
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
Cara lain, yang bisa dibilang lebih bersih, untuk menulisnya adalah:
let { prop1, prop2, prop3 } = someObject;
let newObject = { prop1, prop2, prop3 };
// Merges your selected props into otherObject
Object.assign(otherObject, newObject);
Saya menggunakan ini untuk POST
banyak permintaan di mana saya hanya perlu beberapa data diskrit. Tapi, saya setuju harus ada satu liner untuk melakukan ini.
EDIT: PS -
Saya baru-baru ini belajar Anda dapat menggunakan ultra destrukturisasi pada langkah pertama untuk menarik nilai bersarang dari objek kompleks! Misalnya...
let { prop1,
prop2: { somethingDeeper },
prop3: {
nested1: {
nested2
}
} = someObject;
let data = { prop1, somethingDeeper, nested2 };
Plus, Anda bisa menggunakan operator spread alih-alih Object.assign ketika membuat objek baru:
const { prop1, prop2, prop3 } = someObject;
let finalObject = {...otherObject, prop1, prop2, prop3 };
Atau...
const { prop1, prop2, prop3 } = someObject;
const intermediateObject = { prop1, prop2, prop3 };
const finalObject = {...otherObject, ...intermediateObject };
Object.assign(oof, foo)