【问题标题】:How to spread a nested object in Javascript?如何在Javascript中传播嵌套对象?
【发布时间】:2020-09-17 05:56:09
【问题描述】:

我一直在尝试使用扩展运算符将嵌套对象的属性复制到另一个对象中。但是,我遇到了一个错误。
于是我尝试将嵌套对象分别展开:

try {
  console.log(
    ...{
      autre_panne: { nbr_op_sav: 12, percentage_op_sav: 0 },
      fonctionnement_bluetooth: { nbr_op_sav: 13, percentage_op_sav: 0 },
      memoire_interne: { nbr_op_sav: 15, percentage_op_sav: 0 },
      non_precise: { nbr_op_sav: 15, percentage_op_sav: 0 },
      panne_audio: { nbr_op_sav: 68, percentage_op_sav: 0 },
      piece_aspect_mecanique: { nbr_op_sav: 78, percentage_op_sav: 0 },
      probleme_charge: { nbr_op_sav: 2, percentage_op_sav: 0 },
    }
  );
} catch (error) {
  console.log("Error spreading");
  console.log(error);
}

我收到此错误:

错误传播类型错误:发现不可调用的@@iterator
在对象。 (C:\Users\Avempace\Desktop\Projects\playground\play.js:227:11)
在 Module._compile (internal/modules/cjs/loader.js:955:30)
在 Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
在 Module.load (internal/modules/cjs/loader.js:811:32)
在 Function.Module._load (internal/modules/cjs/loader.js:723:14)
在 Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)


PS: SO中提到的类似问题,请勿回答我的问题:
1.How to use object spread with nested properties?
2.How to spread nested properties in Object?

【问题讨论】:

  • 您将对象直接传播到无效的 console.log()

标签: javascript arrays object javascript-objects


【解决方案1】:

不确定这是否与您测试实际问题的方式有关,但您需要将对象分散到一个对象中 - 在 console.log 调用中我不确定您希望最终结果是什么,但是如果您将 散布到 一个对象中,它应该可以工作:

try {
  console.log(
    {...{
      autre_panne: { nbr_op_sav: 12, percentage_op_sav: 0 },
      fonctionnement_bluetooth: { nbr_op_sav: 13, percentage_op_sav: 0 },
      memoire_interne: { nbr_op_sav: 15, percentage_op_sav: 0 },
      non_precise: { nbr_op_sav: 15, percentage_op_sav: 0 },
      panne_audio: { nbr_op_sav: 68, percentage_op_sav: 0 },
      piece_aspect_mecanique: { nbr_op_sav: 78, percentage_op_sav: 0 },
      probleme_charge: { nbr_op_sav: 2, percentage_op_sav: 0 },
    }}
  );
} catch (error) {
  console.log("Error spreading");
  console.log(error);
}

“它应该可以工作”,我的意思是您应该能够打印对象(实际上是散布到一个新对象中)。

【讨论】:

    【解决方案2】:

    你可以试试:

    const myData = {<the data>} 
    console.log(...Object.entries(myData).flat());
    

    Object.entries 将每个键值对转换为数组中的数组。 flat() 将每个数组分散到主数组中。 ...Object 解构最终数组。

    【讨论】:

      猜你喜欢
      • 2020-03-09
      • 2020-02-01
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 2012-12-25
      • 2012-06-13
      • 1970-01-01
      相关资源
      最近更新 更多