Estoy tratando de asignar propiedades y valores a un objeto inicializado como vacío. Sin embargo, sigue generando el error: no se pueden asignar propiedades de indefinido (configuración '0'). Tenga en cuenta que "duplicado" es una copia del texto obtenido mediante el método de mapa en algunas líneas de código anteriores.
Estoy usando un bucle for para esta tarea. El fragmento de código se muestra a continuación.
//Initialise an object to hold array data const dataStore = {}; //Note: text is an array of string for (let i = 0; i < text.length; i++) { let dataStoreKeyCounter = 0; if ((Object.hasOwn(dataStore, text[i])) !== true) { for (let j = 0; j < duplicate.length; j++) { if (text[i] == duplicate[j]) { dataStoreKeyCounter++; } } //Set the text as the a property and the counter as its value. dataStore.text[i] = dataStoreKeyCounter; } }En tu código, pones dataStore.text[i] . No ha declarado dataStore.text . Después de declarar su objeto, haga dataStore.text = {}
Además, asegúrese de que su duplicado sea creado por
let duplicate = {...dataStore}De esta forma, una edición del original o del duplicado no afectará al otro.
Puede cambiar la siguiente línea:
dataStore.text[i] = dataStoreKeyCounter;
A esto:
dataStore[text[i]] = dataStoreKeyCounter;
Esto primero evaluará el valor de text[i] y luego lo pasará a dataStore como la clave que le brinda la naturaleza "dinámica" que está buscando.
La diferencia aquí es que cuando accede como este dataStore[key] , si la clave no está presente en el Objeto, se crea.
Mientras que, si accede a dataStore.key , si la clave no está presente, devolverá undefined