Introducción
En este laboratorio, aprenderemos sobre la función countBy, que se utiliza para agrupar los elementos de una matriz en función de la función dada y devuelve la cuenta de elementos en cada grupo. Exploraremos cómo esta función se puede utilizar para mapear los valores de una matriz a un nombre de función o propiedad y cómo crear un objeto para contar los elementos en cada grupo utilizando Array.prototype.reduce(). También veremos varios ejemplos para entender cómo utilizar esta función en escenarios del mundo real.
Cómo agrupar y contar elementos en una matriz con JavaScript
Para agrupar y contar elementos en una matriz con JavaScript, siga estos pasos:
- Abra la Terminal/SSH y escriba
nodepara comenzar a practicar la codificación. - Utilice el método
Array.prototype.map()para mapear los valores de una matriz a un nombre de función o propiedad. - Utilice el método
Array.prototype.reduce()para crear un objeto donde las claves se generan a partir de los resultados mapeados. - Cree una función llamada
countByque tome una matriz y una función como argumentos. - Dentro de la función
countBy, utilice un operador ternario para comprobar si el argumento pasado es una función o un nombre de propiedad. Si es una función, úsela como función de mapeo. Si es un nombre de propiedad, acceda a esa propiedad de los elementos de la matriz. - Utilice el método
reduce()para crear un objeto donde cada clave representa un elemento único en la matriz y su valor es el número de veces que aparece en la matriz.
Aquí está el código:
const countBy = (arr, fn) =>
arr
.map(typeof fn === "function" ? fn : (val) => val[fn])
.reduce((acc, val) => {
acc[val] = (acc[val] || 0) + 1;
return acc;
}, {});
Puede probar la función countBy con los siguientes ejemplos:
countBy([6.1, 4.2, 6.3], Math.floor); // {4: 1, 6: 2}
countBy(["one", "two", "three"], "length"); // {3: 2, 5: 1}
countBy([{ count: 5 }, { count: 10 }, { count: 5 }], (x) => x.count); // {5: 2, 10: 1}
Resumen
¡Felicidades! Has completado el laboratorio de Elementos Agrupados Contados. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.