Soy literalmente un novato en javascript, tengo este tipo de serie de datos
[3,3,4,5,5,6]en forma de matriz quiero organizarlo, lo que espero como salida es
(2 de 3) (1 de 4) (2 de 5) (1 de 6)
¿Puede alguien por favor ayudarme a resolver este problema?
Necesito mostrar estos datos en un gráfico, estoy usando chartJS, el número está en forma de meses (1 es enero 2 es febrero...)
esto ho realmente mis datos se ven como
021-06-20T16:17:35.000000Z 2021-07-19T00:17:35.000000Z 2021-07-20T00:17:35.000000Z 2021-07-21T00:17:35.000000Z 2021-07-21T00:17:35.000000Z 2021-08-21T00:17:35.000000ZLo que realmente espero es tener una matriz de objetos en esta forma
[{data : '06',count : 1}, {data : '07',count : 4}, {data : '08',count : 1}]¿Hay algún truco que pueda hacerlo con chartjs sin formatear mis datos?
Puedes hacer esto de muchas maneras, aunque solo te daré una.
function callback(acc, child) { let isCreated = acc.find((ch) => ch.data === child); if (isCreated) { isCreated.count++; } else { acc.push({ data: child, count: 1 }); } return acc; } let data = [3, 3, 4, 5, 5, 6].reduce(callback, []); console.log(data);registro debe ser
[ { data: 3, count: 2 }, { data: 4, count: 1 }, { data: 5, count: 2 }, { data: 6, count: 1 } ]Simplemente puede usar esto, podría ayudar:
// This is the test array var a = [1,1,1,2,2,3,4,4,5]; // This will create object below // { 1: 3, 2: 2, 3: 1, 4: 2, 5: 1} var counter = a.reduce((state,current)=> (state[current] = (state[current] || 0) + 1, state),{}); // This will log the output you mentioned for (const [number, count] of Object.entries(counter)) { console.log(`(${count} of ${number})`); }Solución:
a = [3,3,4,5,5,6] new Set(a).forEach(x => console.log('data: ' + x + ', count: ' + a.filter(y => y === x).length));Producción:
data: 3, count: 2 data: 4, count: 1 data: 5, count: 2 data: 6, count: 1