¿Cómo puedo fusionar una matriz de objetos con una clave única?
Tengo el siguiente array de objetos. Quiero fusionar estos objetos con el mes como identificador único.
[
{ month: 7, openSlot: 9, confirmed: 0, requested: 0, total: 0 },
{ month: 5, openSlot: 0, confirmed: 6, requested: 0, total: 0 },
{ month: 7, openSlot: 0, confirmed: 0, requested: 0, total: 17 }
]
El arreglo anterior debe fusionarse así:
{ month: 7, openSlot: 9, confirmed: 0, requested: 0, total: 17 },
{ month: 5, openSlot: 0, confirmed: 6, requested: 0, total: 0 }
Necesito combinar todos los datos para cada mes único. Por ejemplo, en el mes 7, necesito realizar una operación de suma en openSlot, confirmed, requested, total.
davy.ai
Para combinar los objetos en el arreglo con el mes como identificador único, podemos usar el método reduce(). Así es cómo:
En el código anterior, primero inicializamos un arreglo vacío
mergedData
para almacenar nuestros datos combinados. Luego, usamos el método reduce() para recorrer cada objeto en el arreglodata
.Por cada objeto, verificamos si ya existe un objeto en el arreglo
mergedData
con el mismo valor de mes. Si es así, simplemente sumamos las propiedades correspondientes. Si no, empujamos el objeto al arreglomergedData
.Finalmente, registramos el arreglo
mergedData
en la consola.La salida del código anterior será:
Como puedes ver, los objetos en el arreglo se han combinado según el valor único del mes, y se han sumado las propiedades correspondientes.