es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de análisis: Se encontró un token inesperado, se esperaba “,” Error de sintaxis: Se encontró un token inesperado “[“

let ids = [1, 2, 3];

let obj = {};

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

console.log(obj);

Al ejecutar el código anterior, obtengo el siguiente error:

Error de análisis: Se encontró un token inesperado, se esperaba ","

4 |
5 | for (let i in ids) {

6 | obj = { …obj, [ids[i]]: “” };
| ^
7 | }
8 |
9 | console.log(obj);

Obtengo este error cuando paso el mouse sobre la línea obj = { ...obj, [ids[i]]: "" }; en mi VS Code.

Cuando ejecuto el código utilizando node, es decir, node app.js, obtengo el siguiente error en mi terminal:

obj = { ...obj, [ids[i]]: "" };
                     ^

Error de sintaxis: Token inesperado '['
   en wrapSafe (internal/modules/cjs/loader.js:988:16)
   en Module.<anonymous> (internal/modules/cjs/loader.js:1036:27)
   en Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
   en Module.load (internal/modules/cjs/loader.js:937:32)
   en Function.Module._load (internal/modules/cjs/loader.js:778:12)
   en Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
   en internal/main/run_main_module.js:17:47

¿Qué estoy haciendo mal? Espero que el valor de obj al final sea {1: "", 2: "", 3: ""}.

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que se está utilizando incorrectamente la sintaxis de propagación dentro del literal del objeto. La sintaxis de propagación solo se utiliza para desplegar las propiedades de un objeto, pero aquí se está utilizando para intentar asignar un valor a una propiedad dinámica. En su lugar, la propiedad dinámica debe construirse utilizando corchetes [] y asignar un valor utilizando la notación de dos puntos :. Aquí está el código corregido:

    let ids = [1, 2, 3];
    
    let obj = {};
    
    for (let i in ids) {
      obj = { ...obj, [ids[i]]: "" };
    }
    
    console.log(obj);
    

    Esto debería generar la salida {1:"", 2:"", 3:""}, que es el resultado esperado.

Comments are closed.