Tengo un conjunto de datos que estoy transformando en otra matriz para que pueda procesarse en un gráfico. Tengo el gráfico funcionando, pero la clave de count es incorrecta. Esto es lo que parece:
export type ChartData = { category?: string; value?: number | string; count?: number; createdAt: string; physicalActivity?: number; }; const moodArr: ChartData[] = []; if (data) { data.assessments.data.forEach((assessment) => { const { responses } = assessment.questionnaires[0]; responses.forEach((response) => { response.value.forEach((moodValue) => { console.log(moodValue) moodArr.push({ value: toMoodMap(moodValue), count: (moodValue || 0) + 1, createdAt: moment(assessment.createdAt).format('YYYY-MM-DD'), }) }); }); }); count no funciona porque moodValue se devolverá como un número entero. toMoodMap solo se asignará a una cadena según el moodValue . Sin embargo, count solo tomará su valor original (que será 0 - 4) en lugar de contar las veces que se devuelve. ¿Hay alguna forma de llevar la cuenta de esto?
forEach toma un segundo parámetro que es el índice del elemento, por lo que si solo desea contar cuántas veces se empuja un elemento a la matriz, podría hacer algo como
const moodArr: ChartData[] = []; if (data) { data.assessments.data.forEach((assessment) => { const { responses } = assessment.questionnaires[0]; responses.forEach((response,i) => { response.value.forEach((moodValue,j) => { console.log(moodValue) moodArr.push({ value: toMoodMap(moodValue), count: response.value.length*i + j, createdAt: moment(assessment.createdAt).format('YYYY-MM-DD'), }) }); }); });