¿Cómo contar el número de ocurrencias de nombres repetidos en una array de objetos en JavaScript?

Dada una array de objetos, la tarea es encontrar las ocurrencias de una clave dada de acuerdo con su valor.

Ejemplo:

Input : arr = [
   {
      employeeName: "Ram",
      employeeId: 23
   },
   {
      employeeName: "Shyam",
      employeeId: 24
   },
   {
      employeeName: "Ram",
      employeeId: 21
   },
   {
      employeeName: "Ram",
      employeeId: 25
   },
   {
      employeeName: "Kisan",
      employeeId: 22
   },
   {
      employeeName: "Shyam",
      employeeId: 20
   }
]

key = "employeeName"

Output: [
    {employeeName: "Ram", occurrences: 3},
    {employeeName: "Shyam", occurrences: 2},
    {employeeName: "Kisan", occurrences:  1}
] 

Para lograrlo contamos con los siguientes enfoques:

Enfoque 1:

En este enfoque, seguimos los pasos a continuación.

  • Cree una array de salida vacía.
  • Usando forEach iterar la array de entrada.
  • Compruebe si la array de salida contiene algún objeto que contenga el valor de la clave proporcionada
  • De lo contrario, cree un nuevo objeto e inicialice el objeto con la clave (el nombre de la clave proporcionado) establecida en el valor (el valor de la clave del objeto de la presente iteración) y la ocurrencia establecida en el valor 1
  • En caso afirmativo, itere la array de salida y busque si la clave de la iteración actual es igual a la clave de la iteración de la array de entrada y luego aumente la ocurrencia a 1.

Javascript

<script>
function findOcc(arr, key){
  let arr2 = [];
    
  arr.forEach((x)=>{
       
    // Checking if there is any object in arr2
    // which contains the key value
     if(arr2.some((val)=>{ return val[key] == x[key] })){
         
       // If yes! then increase the occurrence by 1
       arr2.forEach((k)=>{
         if(k[key] === x[key]){ 
           k["occurrence"]++
         }
      })
         
     }else{
       // If not! Then create a new object initialize 
       // it with the present iteration key's value and 
       // set the occurrence to 1
       let a = {}
       a[key] = x[key]
       a["occurrence"] = 1
       arr2.push(a);
     }
  })
    
  return arr2
}
  
  
let arr = [
   {
      employeeName: "Ram",
      employeeId: 23
   },
   {
      employeeName: "Shyam",
      employeeId: 24
   },
   {
      employeeName: "Ram",
      employeeId: 21
   },
   {
      employeeName: "Ram",
      employeeId: 25
   },
   {
      employeeName: "Kisan",
      employeeId: 22
   },
   {
      employeeName: "Shyam",
      employeeId: 20
   }
]
  
let key = "employeeName"
console.log(findOcc(arr, key))
</script>

Producción:

[
   {
      employeeName: "Ram",
      occurrence: 3
   }, 
   {
      employeeName: "Shyam",
     occurrence: 2
   }, 
   {
    employeeName: "Kisan",
    occurrence: 1
   }
]

Publicación traducida automáticamente

Artículo escrito por _saurabh_jaiswal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *