【问题标题】:Destructuring an object with nested array使用嵌套数组解构对象
【发布时间】:2022-11-20 16:33:07
【问题描述】:

基本上我想破坏这个对象以获得这个结果但是在控制台中我看到u is not defined

物体:

const game =
    releases: {
      "Oath In Felghana": ["USA", "Japan"],
     };`

我的代码:

const {
    releases: {
      "Oath In Felghana": o = [u, j],
 } = game;

console.log(`My Best Release Is ${o} It Released in ${u} & ${j}`);

我想看什么

My Best Release Is Oath In Felghana 它在美国和日本发行

我得到了什么

未捕获的 ReferenceError:您未定义

所以问题是它告诉我你是未定义的,即使我使用数组解构来破坏它

任务中提到你需要使用键和值,所以我试着把它放在对象和我的解构之间

game.releases["Oath In Felghana"] = Object.keys(game.releases["Oath In Felghana"]);

但仍然不起作用。

【问题讨论】:

  • 首先,您的“对象”不是对象而是字符串。不过不确定这是否只是格式问题...
  • @derpirscher 只是格式问题。如果它是一个字符串,就会出现不同的错误。 Uncaught ReferenceError: u is not defined 表示它是已处理的代码。
  • @VLAZ 可能。但是我们都看到过许多问题,其中代码和所谓的错误消息不相符。甚至现在怎么写,还是无效……
  • @derpirscher 然后 OP 设法不小心使用了字符串而不是代码,然后报告了一个只有代码而不是字符串才会发生的错误。我发现发生这种情况的可能性远远低于格式问题。我还考虑到它是通过编辑器所在的询问向导创建的非常喜欢在不需要的地方添加额外的反引号。但也许你是对的,我不应该编辑——如果你认为初始版本确实是 100% 准确的表示,那么请随意回滚。

标签: javascript destructuring object-destructuring


【解决方案1】:
const { releases: { "Oath In Felghana" : [u, j] } = game

console.log(u, j)

或者如果您还需要o:

const { releases: { "Oath In Felghana" : o, "Oath In Felghana" : [u, j] } = game

console.log(o, u, j)

o = [ u, j ] 内部解构作为赋值工作。

inb4“我可以只写一次密钥吗?”:不可以。据我所知,您必须复制密钥“Oath In Felghana”才能创建别名o并将其解构为u和j。

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 2017-01-08
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 2020-04-09
    • 2021-11-16
    • 2021-07-16
    • 2020-09-03
    相关资源
    最近更新 更多