Agrupar elementos por conteo

JavaScriptJavaScriptBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/array_methods("Array Methods") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") javascript/AdvancedConceptsGroup -.-> javascript/destr_assign("Destructuring Assignment") subgraph Lab Skills javascript/variables -.-> lab-28221{{"Agrupar elementos por conteo"}} javascript/data_types -.-> lab-28221{{"Agrupar elementos por conteo"}} javascript/arith_ops -.-> lab-28221{{"Agrupar elementos por conteo"}} javascript/comp_ops -.-> lab-28221{{"Agrupar elementos por conteo"}} javascript/array_methods -.-> lab-28221{{"Agrupar elementos por conteo"}} javascript/higher_funcs -.-> lab-28221{{"Agrupar elementos por conteo"}} javascript/destr_assign -.-> lab-28221{{"Agrupar elementos por conteo"}} end

Cómo agrupar y contar elementos en una matriz con JavaScript

Para agrupar y contar elementos en una matriz con JavaScript, siga estos pasos:

  1. Abra la Terminal/SSH y escriba node para comenzar a practicar la codificación.
  2. Utilice el método Array.prototype.map() para mapear los valores de una matriz a un nombre de función o propiedad.
  3. Utilice el método Array.prototype.reduce() para crear un objeto donde las claves se generan a partir de los resultados mapeados.
  4. Cree una función llamada countBy que tome una matriz y una función como argumentos.
  5. 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.
  6. 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.