Javascript对象解构/操作

bug*_*ugs 0 javascript ecmascript-6

假设我有以下对象:

const original = {
  first: 1,
  second: 2,
  third: 3
}
Run Code Online (Sandbox Code Playgroud)

我想用以下结构创建一个新的,不同的对象:

const modified = {
  first: 100,
  third: 3
}
Run Code Online (Sandbox Code Playgroud)

ES6语法允许我做一些非常强大的操作,如:

const {second, ...newElement} = original

这导致:

const newElement = {
  first: 1,
  third: 3
}
Run Code Online (Sandbox Code Playgroud)

但后来我还是要做newElement.first = 100.

或者,我可以这样做:

const newElement2 = Object.assign({}, original , {second: undefined, first: 100})

但这并没有真正删除second,只是将其设置为undefined.


是否有一个更优雅的替代,从去originalmodified

Ori*_*ori 5

创建一个first: 100使用对象扩展更新的对象,然后使用对象休息对其进行解构.

注意: 对象休息/传播是ECMAScript的第4阶段提议,而不是ES6的一部分.

const original = {
  first: 1,
  second: 2,
  third: 3
}

const { second, ...newElement } = { ...original, first: 100 };

console.log(newElement);
Run Code Online (Sandbox Code Playgroud)