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: ""}
发布于 2021-12-07 04:28:19
有几种解决办法。
for (let i in ids) {
obj = { ...obj, [ids[i]]: "" }; // Brackets make it act as a key name instead of something else
}简单而简单的方法:
for (let i in ids) {
obj[ids[i]] = ""; // This adds a value
}发布于 2021-12-07 04:27:22
使用[ids[i]]而不是ids[i]。
let ids = [1, 2, 3];
let obj = {};
for (let i in ids) {
obj = { ...obj, [ids[i]]: "" };
}
console.log(obj);
发布于 2021-12-07 04:30:39
is[i]是key,应该是解析运行时,所以您应该将其设置为computed property names。
从ECMAScript 2015开始,对象初始化器语法也支持计算的属性名。这允许您将表达式放入方括号[]中,该表达式将被计算并用作属性名称。这让人想起属性访问器语法的括号表示法,您可能已经使用它来读取和设置属性。- MDN
let ids = [1, 2, 3];
let obj = {};
for (let i in ids) {
obj = { ...obj, [ids[i]]: "" };
}
console.log(obj);
https://stackoverflow.com/questions/70254904
复制相似问题