Tengo este objeto totalData que estoy desestructurando para agregar un nuevo valor de objeto. Entiendo que puedo definir nuevas propiedades de objeto usando cadenas de plantilla (como se muestra a continuación), pero ¿cómo puedo usar cadenas de plantilla para obtener el valor de un objeto? El siguiente código simplemente ejecuta un error que dice "identificador esperado" después de .[ ${currentMonth}
], por ejemplo. ¿Hay otra manera de hacer esto?
const newTotalData = { ...totalData, [`${currentYear}`]: { [`${currentMonth}`]: { [`${currentWeek}`]: { [`${currentDay}`]: { completedTasks: totalData[`${currentYear}`].[`${currentMonth}`].[`${currentWeek}`].[`${currentDay}`].completedTasks + 1 } }, }, }, };
El problema no está en las cadenas de plantilla, es la sintaxis .[…]
que está utilizando. Utilice la notación de punto o corchete , no ambas a la vez:
completedTasks: totalData[`${currentYear}`][`${currentMonth}`][`${currentWeek}`][`${currentDay}`].completedTasks + 1
Sin embargo, tenga en cuenta que el uso de literales de plantilla en su código no tiene sentido. Las claves de propiedad ya están forzadas implícitamente a cadenas, no es necesario poner sus variables en literales de plantilla que no agregan nada. Solo escribe
const newTotalData = { ...totalData, [currentYear]: { [currentMonth]: { [currentWeek]: { [currentDay]: { completedTasks: totalData[currentYear][currentMonth][currentWeek][currentDay].completedTasks + 1 }, }, }, }, };