Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

222
Visualizações
Parsing error: Unexpected token, expected "," AND SyntaxError: Unexpected token '['

app.js

let ids = [1, 2, 3];

let obj = {};

for (let i in ids) {
  obj = { ...obj, ids[i]: "" };   
}

console.log(obj);

While executing the above code, I get the below error.

Parsing error: Unexpected token, expected ","

  4 |
  5 | for (let i in ids) {
> 6 |   obj = { ...obj, ids[i]: "" };  
    |                      ^
  7 | }
  8 |
  9 | console.log(obj);eslint

I get this error, when I hover the mouse above the line obj = { ...obj, ids[i]: "" }; in my VS Code.

When I run the code using node, i.e on node app.js. I get the following error in my terminal :

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

What am I doing wrong? I expect the value of obj at the end to be {1 : "", 2 : "", 3: ""}

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

There are several solutions.

  1. Wrap it around a bracket:
for (let i in ids) {
  obj = { ...obj, [ids[i]]: "" }; // Brackets make it act as a key name instead of something else
}
  1. The simple and easy way:
for (let i in ids) {
  obj[ids[i]] = ""; // This adds a value
}
about 4 years ago · Juan Pablo Isaza Relatório

0

Use [ids[i]] instead of ids[i].

let ids = [1, 2, 3];

let obj = {};

for (let i in ids) {
  obj = { ...obj, [ids[i]]: "" };
}

console.log(obj);

about 4 years ago · Juan Pablo Isaza Relatório

0

is[i] is key that should be resolve runtime, so you should make it computed property names

Starting with ECMAScript 2015, the object initializer syntax also supports computed property names. That allows you to put an expression in brackets [], that will be computed and used as the property name. This is reminiscent of the bracket notation of the property accessor syntax, which you may have used to read and set properties already. - MDN

let ids = [1, 2, 3];

let obj = {};
for (let i in ids) {
  obj = { ...obj, [ids[i]]: "" };
}

console.log(obj);

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda