有没有办法在es6中将对象解构为新对象?

ree*_*rix 3 javascript ecmascript-6 reactjs

例如,我有这个对象:

const payload = {
    apple: 1,
    dog: 2,
    cat: 3
}
Run Code Online (Sandbox Code Playgroud)

我想将它解构为一个只包含apple和的新对象dog:

const newPayload = {
    apple:1,
    dog: 2
}
Run Code Online (Sandbox Code Playgroud)

就像是:

const {{apple, dog} : newPayload} = payload
Run Code Online (Sandbox Code Playgroud)

显然以上是错误的,但想知道是否有办法做这样的事情.

谢谢!

Ant*_*ony 6

你可以使用delete:

const newPayload = { ...payload };

delete newPayload.cat
Run Code Online (Sandbox Code Playgroud)

要么:

const { cat, ...newPayload } = payload;
Run Code Online (Sandbox Code Playgroud)

Lodash还有omit():

const newPayload = _.omit(payload, ['cat']);
Run Code Online (Sandbox Code Playgroud)


Mat*_*Aft 5

大概分两步:

const payload = {
    apple: 1,
    dog: 2,
    cat: 3
}

const { apple, dog } = payload

const newPayload = {
    apple,
    dog,
}
Run Code Online (Sandbox Code Playgroud)

或者你可以使用 lodash _.pick

const newPayload = _.pick(payload, ['apple', 'dog'])
Run Code Online (Sandbox Code Playgroud)