从 JavaScript 中的对象克隆具有特定属性的对象?

Osm*_*hid 5 javascript clone object

从具有特定属性(而不是全部)的另一个对象克隆一个对象的优化方法是什么?

如下所示,我们可以通过对象的投影来获取值:

let tempObject = { 
  prop1 : 'something',
  prop2 : 'something' ,
  other : 'others'
};
//then
let { prop1, prop2} = tempObject;
Run Code Online (Sandbox Code Playgroud)

同样,我想从另一个对象克隆一些属性,例如

let oldObject = { 
  p1 : 'something',
  p2 : 'somethig',
  p3 : 'something' 
}
Run Code Online (Sandbox Code Playgroud)

想要从上面制作另一个oldObject仅具有p1 and p2这两个属性的对象。预计newObject将会{p1 : 'something', p2 : 'somethig'}

我知道有很多方法可以做到这一点,但我想通过解释了解优化方法。

T.J*_*der 3

我会保持简单:

let newObject = {
    p1: oldObject.p1,
    p2: oldObject.p2
};
Run Code Online (Sandbox Code Playgroud)

这也将非常非常快,正如您所评论的,您正在考虑性能方面。

您可以使用循环使其复杂化:

let newObject = {};
for (const name of ["p1", "p2"]) {
    newObject[name] = oldObject[name];
}
Run Code Online (Sandbox Code Playgroud)

或者使用属性休息(ES2018,在现代浏览器中,并且长期以来受到转译器的支持),您可以复制除您命名的之外的所有内容:

let {p3, ...newObject} = oldObject;
Run Code Online (Sandbox Code Playgroud)

但在大多数情况下我会保持简单。