【发布时间】:2022-01-12 05:13:38
【问题描述】:
app.js
let ids = [1, 2, 3];
let obj = {};
for (let i in ids) {
obj = { ...obj, ids[i]: "" };
}
console.log(obj);
执行上述代码时,出现以下错误。
Parsing error: Unexpected token, expected ","
4 |
5 | for (let i in ids) {
> 6 | obj = { ...obj, ids[i]: "" };
| ^
7 | }
8 |
9 | console.log(obj);eslint
当我将鼠标悬停在 VS 代码中的 obj = { ...obj, ids[i]: "" }; 行上方时,出现此错误。
当我使用节点运行代码时,即在node app.js 上。我的终端出现以下错误:
obj = { ...obj, ids[i]: "" };
^
SyntaxError: Unexpected token '['
at wrapSafe (internal/modules/cjs/loader.js:988:16)
at Module._compile (internal/modules/cjs/loader.js:1036:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
at Module.load (internal/modules/cjs/loader.js:937:32)
at Function.Module._load (internal/modules/cjs/loader.js:778:12)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
at internal/main/run_main_module.js:17:47
我做错了什么?我希望最后obj 的值是{1 : "", 2 : "", 3: ""}
【问题讨论】:
-
您希望
obj最终看起来像什么? -
我希望 obj 最后的值是 {1 : "", 2 : "", 3: ""}。问题中也提到了这一点。
-
不要在数组上使用
for/in。它适用于对象。使用for/of或用于迭代数组的其他方法之一。 -
您是否有特殊原因要这样做?从技术上讲,数组已经是您尝试实现的形状的对象(仅具有一些附加属性)。您可以使用
const newArr = [...ids];克隆您的阵列,这对您来说可能是一个更好的选择。如果你真的需要一个对象,一个快速的选择是使用const obj = Object.assign({}, ids);