将数组分解为对象

时间:2019-03-25 22:23:02

标签: javascript arrays destructuring

我正在尝试用javascript进行数组解构并遇到一些令人费解的行为

这是我的代码-

 let res = {
            start: {},
            end: {},
        };
[res.start.hour, res.start.minute] = [7, 20]
[res.end.hour, res.end.minute] = [17, 30]
console.log(res)

输出为

{ start: { hour: 17, minute: 30 }, end: {} }

由于某种原因,[17,30]被分配给res.start,而不是res.end。

此外,如果我添加如下的console.log语句

 let res = {
            start: {},
            end: {},
        };
[res.start.hour, res.start.minute] = [7, 20]
console.log(JSON.stringify(res));
[res.end.hour, res.end.minute] = [17, 30]
console.log(res)

然后它起作用。 res.end将获得正确的值。 输出-

{"start":{"hour":7,"minute":20},"end":{}}
{ start: { hour: 7, minute: 20 },
  end: { hour: 17, minute: 30 } }

我进行了搜索,并通过MDN页面阅读了有关分解的内容,但是找不到对此的解释。 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

尝试一下:

jupyter nbconvert --to script object_detection_tutorial.ipynb

我将您的代码从第一个块复制粘贴到VS Code中,并使用了“ Alt + Shift + F”(自动格式化)。它将代码固定为以下代码,表明明显有问题:

let res = {
  start: {},
  end: {}
};
[res.start.hour, res.start.minute] = [7, 20]; // Notice the semicolons.
[res.end.hour, res.end.minute] = [17, 30];
console.log(res);

事实证明,分号有时在JavaScript中确实很重要。