IMO นี่เป็นวิธีที่ง่ายที่สุดในการบรรลุสิ่งที่คุณต้องการ:
let { prop1, prop2, prop3 } = someObject;
let data = { prop1, prop2, prop3 };
// data === { prop1: someObject.prop1, ... }
โดยพื้นฐานแล้วให้โครงสร้างเป็นตัวแปรแล้วใช้ initializer ชวเลขเพื่อสร้างวัตถุใหม่ ไม่ต้องการ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
ขอสิ่งต่างๆมากมายซึ่งฉันต้องการข้อมูลที่ไม่ต่อเนื่องเพียงไม่กี่ชิ้น แต่ฉันเห็นด้วยควรมีหนึ่งซับในการทำเช่นนี้
แก้ไข: 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)