【问题标题】:ES6 Destructing for objectsES6 对象的析构
【发布时间】:2019-07-24 15:41:15
【问题描述】:

我是 ES6 破坏的新手。我有一个包含另一个对象的对象。我想存储嵌套对象中的某些值。

例如——

z = {g: 1, h: 2, i: {d1:5, d2:6, d3:7}}

当我这样做时

let { g, i : {d1, d3}, ...less } = z

less 变量仅存储 h 而不是 d2

有没有办法做到这一点

less = {h, i : {d2}}

【问题讨论】:

  • 您可以使用let { g, i : {d1, d3, ...less1}, ...less2 } = z; let result = {...less1, ...less2},但我不确定您的请求的“边界”是什么。
  • 没有简单的方法(我相信),但在那个特定的例子中你可以这样做:let { g, i : {d1, d3, ...i_less}, ...less } = z; less = {...less, i: {...i_less}};

标签: javascript ecmascript-6 destructuring


【解决方案1】:

不,没有。你能做的是

let { g, i: { d1, d3, ...less2 }, ...less } = z
let less = { ...less, i: less2 };

这会提取剩余部分并将它们重新合并在一起,同时保留形状。

【讨论】:

    【解决方案2】:

    不,很遗憾,这是不可能的。
    但是,您可以使用第二个剩余扩展从 i 中提取缺失值:

    let z = {g: 1, h: 2, i: {d1:5, d2:6, d3:7}};
    let { g, i : {d1, d3, ...i_less}, ...rest_less } = z;
    let less = { i: i_less, ...rest_less };
    console.log(less)

    【讨论】:

      【解决方案3】:

      这是我的方法,希望对你有帮助。

      let z = {
        g: 1,
        h: 2,
        i: {
          d1:5,
          d2:6,
          d3:7
        }
      }
      
      let {g, i: {d1, d3, ...less1}, ...less2} = z
      let less = {
        i: less1,
        ...less2,
      }
      
      console.log(less); // output: {h: 2, i:{d2:6}}

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-16
        • 2020-02-18
        • 2017-07-24
        • 2023-03-03
        • 2020-08-28
        • 1970-01-01
        • 2018-08-30
        • 2017-08-23
        相关资源
        最近更新 更多