Estoy tratando de ordenar algunos números y quiero contar la cantidad de veces que una matriz tiene un número determinado.
Mi pregunta es más sobre la estructura de una matriz que el conteo de la parte del número. Me gustaría construir una matriz que se vea así a continuación.
let numbers = [1,2,3,4,4,4,5,5,6];¿Cómo podría hacer la estructura de datos a continuación?
numbers[3].count // this will be equal to 3 after I loop through;
¿Cómo hago para que cada parte de la matriz tenga un parámetro de objeto?
¿Simplemente hago un bucle así?
for (let i = 0; i < numbers.length; i++){ numbers[i] = { count: 0 } }Entiendo que esto no me dará la cuenta correcta, pero no me importa esa parte del problema. Me gustaría resolver eso por mi cuenta. Solo necesito estar seguro de que esta es la forma correcta de agregar los parámetros del objeto.
Construiría estas funciones por mi cuenta. Algo así Puedes copiar y pegar esto en la consola de tu navegador.
// my numbers list const numbers = [1, 2, 3, 4, 4, 4, 5, 5, 6]; // reduced to unique entries const uniques = [...new Set(numbers)]; // function to count occurrences in my list of number const count = (n) => numbers.filter((num) => num === n).length; // you can test here console.log(`counting ${uniques[4]}s`, count(uniques[4])); // get these as object console.log(uniques.map((unique) => ({[unique]: count(unique)})))La forma más sencilla de lograr esto usando Array.forEach() .
let numbers = [1,2,3,4,4,4,5,5,6]; const obj = {}; numbers.forEach((item) => { obj[item] = (obj[item] || 0) + 1; }); console.log(obj);const numbers = [1,2,3,4,4,4,5,5,6]; const counts = {}; numbers.forEach((x) => counts[x] = (counts[x] || 0) + 1); console.log(counts)