【问题标题】:Is there a way to destructure an object into a new object in es6?有没有办法在 es6 中将对象解构为新对象?
【发布时间】:2018-10-27 03:19:09
【问题描述】:

例如,我有这个对象:

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

我想把它解构成一个只包含appledog的新对象:

const newPayload = {
    apple:1,
    dog: 2
}

类似:

const {{apple, dog} : newPayload} = payload

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

谢谢!

【问题讨论】:

  • 这不是“解构”(即从元组转换为单个命名变量),而是带有属性过滤器的浅拷贝。
  • 这种方式很丑……const newPayload = (({apple, dog}) => ({apple, dog}))(payload)
  • @Dai 不,这不是那个问题的重复。这是不同的
  • 一个不那么丑的无污染方式是const newPayload = (({ cat, ...x }) => x)(payload);

标签: javascript reactjs ecmascript-6


【解决方案1】:

你可以使用delete:

const newPayload = { ...payload };

delete newPayload.cat

或者:

const { cat, ...newPayload } = payload;

Lodash 还有omit():

const newPayload = _.omit(payload, ['cat']);

【讨论】:

  • const { cat, ...newPayload } = payload; 正是我的想法。谢谢!
  • 如果你想避免在上下文中乱扔consts ... const newPayload = (({ cat, ...x }) => x)(payload);
【解决方案2】:

大概分两步:

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

const { apple, dog } = payload

const newPayload = {
    apple,
    dog,
}

或者你可以使用 lodash _.pick

const newPayload = _.pick(payload, ['apple', 'dog'])

【讨论】:

    猜你喜欢
    • 2022-11-26
    • 1970-01-01
    • 2023-03-03
    • 2021-07-01
    • 2022-11-17
    • 2011-12-10
    • 2016-03-31
    • 2018-04-12
    • 2019-11-19
    相关资源
    最近更新 更多