Aprende Lodash (14) _.countBy, cuenta elementos en un arreglo

Según la documentación de lodash, _.countBy crea un objeto compuesto por claves generadas a partir de los resultados de ejecutar iteratee sobre cada elemento de collection. El valor correspondiente de cada clave es el número de veces que iteratee devolvió esa clave. iteratee se invoca con un argumento: (value).

Recrea lodash _.countBy con tu propia función usando JavaScript puro.

Entrada

  • collection (Array or Object): La colección que se debe recorrer.
  • [iteratee=_.identity] (Function or string): La función iteratee que se usará para comprobar las claves y contarlas.

Devuelve un objeto con los valores contados.

Escenario de la vida real

Trabajas en un concesionario de automóviles. Tu jefe te pide que cuentes los autos del lote según su color. Regresas y le dices que hay 5 rojos, dos azules y uno verde. El color que se debe buscar es la función iteratee, y el estacionamiento es el objeto o arreglo que estás buscando. También podría darte una función para comprobar los autos, como contar los autos con un kilometraje superior a 100,000 kilómetros. Regresas y dices "true": 3, "false": 4; esencialmente, 3 autos tienen más de 100k y 4 tienen menos.

Ejemplos

houses = [
   {
    stories: 2,
    door: "blue"
   },
   {
    stories: 3,
    door: "blue"
   },
   {
    stories: 2,
    door: "green"
   }
]

countBy(houses, "door") ➞  { blue: 2, green: 1 }

Notas

No intentes importar lodash; simplemente estás escribiendo tu propia versión.