IMO đây là cách dễ nhất để thực hiện những gì bạn đang tìm kiếm:
let { prop1, prop2, prop3 } = someObject;
let data = { prop1, prop2, prop3 };
// data === { prop1: someObject.prop1, ... }
Về cơ bản, cấu trúc thành các biến và sau đó sử dụng tốc ký khởi tạo để tạo một đối tượng mới. Không cầnObject.assign
Tôi nghĩ rằng đây là cách dễ đọc nhất, dù sao đi nữa. Bạn có thể chọn các đạo cụ chính xác someObject
mà bạn muốn. Nếu bạn có một đối tượng hiện có mà bạn chỉ muốn hợp nhất các đạo cụ vào, hãy làm một cái gì đó như thế này:
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
Một cách khác, được cho là sạch hơn, cách viết là:
let { prop1, prop2, prop3 } = someObject;
let newObject = { prop1, prop2, prop3 };
// Merges your selected props into otherObject
Object.assign(otherObject, newObject);
Tôi sử dụng điều này cho POST
các yêu cầu rất nhiều trong đó tôi chỉ cần một vài dữ liệu rời rạc. Nhưng, tôi đồng ý nên có một lớp lót để làm điều này.
EDIT: PS -
Gần đây tôi đã biết rằng bạn có thể sử dụng siêu phá hủy trong bước đầu tiên để kéo các giá trị lồng nhau ra khỏi các đối tượng phức tạp! Ví dụ...
let { prop1,
prop2: { somethingDeeper },
prop3: {
nested1: {
nested2
}
} = someObject;
let data = { prop1, somethingDeeper, nested2 };
Ngoài ra, bạn có thể sử dụng toán tử trải rộng thay vì Object.assign khi tạo một đối tượng mới:
const { prop1, prop2, prop3 } = someObject;
let finalObject = {...otherObject, prop1, prop2, prop3 };
Hoặc là...
const { prop1, prop2, prop3 } = someObject;
const intermediateObject = { prop1, prop2, prop3 };
const finalObject = {...otherObject, ...intermediateObject };
Object.assign(oof, foo)