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 请求很多,我只需要几条离散数据。但是,我同意应该有一个单行来执行此操作。
编辑:P.S. -
我最近了解到您可以在第一步中使用超解构从复杂对象中提取嵌套值!比如……
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 };