Método de agrupación de objetos

by | May 24, 2019 | Angular, Ionic

El método de agrupación consiste en buscar el número de ocurrencias dentro de un arreglo de objetos, y generar otro arreglo a partir de las ocurrencias que se hayan encontrado.

En este método ‘agrupación ()’ lo primero que tendremos que hacer es inicializar los valores de nuestros dos arreglos, el primer arreglo en este caso es array_Lista_canje le asignaremos los valores de los objetos que tenemos, y el segundo arreglo arrayAgrupado le inicializaremos sin ningún dato.

Un dato importante en este método de agrupación es que al array ‘arrayAgrupado’ cada que se le agrega un objeto, dicho objeto tendrá un atributo llamado ocurrences, y es ahí donde se irán guardando el número de ocurrencias cada vez que se repita un elemento.

En el primer if que aparece en el método se valida si el arreglo que contiene los datos tiene solamente un elemento, si es así el objeto de ese arreglo se le asignara al arreglo de lista canje y ahí terminaría el proceso del método.

Si no se cumplió la condición anterior quiere decir que el arreglo ‘array_Lista_canje’  tiene más de un elemento y ejecutara el código que está dentro del else, lo primero que tendremos que hacer es empezar a recorrer el arreglo ‘array_Lista_canje’  para poder obtener sus datos, esto lo aremos con un for, cuando el for empieza a realizar su recorrido lo primero que deberá de hacer es obtener el primer valor del arreglo ‘array_Lista_canje’  y asignárselo al arreglo de lista canje, un dato importante  es incrementar el valor de la variable del ciclo for, esto para que no ejecute el código que esta abajo y vuelva a empezar a realizar el recorrido con los demás elementos.

 

 

Después de que haya realizado la primera iteración el ciclo, ahora tendremos que empezar a buscar las ocurrencias para ello usaremos la función llamada filter, que nos permite buscar un elemento dentro de un objeto y en caso de que no exista regresa un valor tipo undefined.

Si el resultado de la búsqueda fue undefined significa que el elemento no esta y por consecuencia se agregara un nuevo objeto al arreglo arrayAgrupado.

Si el resultado no fue undefinded significa que se encontró el objeto y por consecuencia debemos de incrementar el número de ocurrencias en 1. Para ello realizaremos un recorrido del arreglo de agrupación para buscar en qué posición esta el elemento que se encontró y sumarle un 1 a las ocurrencias del objeto.

Código

agrupacion() {

this.array_Lista_canaje = this.servicios.getDatosCatalogo();
this.arrayAgrupado = [];

if (this.array_Lista_canaje.length === 1) {
this.datosCompra = {
Id: this.array_Lista_canaje[0].IDReward,
Name: this.array_Lista_canaje[0].Name,
Url: this.array_Lista_canaje[0].Url,
Descripction: ”,
Points: this.array_Lista_canaje[0].Points,
Date: ’25/12/2019′,
Ocurrences: 1
};
this.arrayAgrupado.push(this.datosCompra);
} else {
for (let i = 0; i < this.array_Lista_canaje.length; i++) {
if (i === 0) {
this.datosCompra = {
Id: this.array_Lista_canaje[i].IDReward,
Name: this.array_Lista_canaje[i].Name,
Url: this.array_Lista_canaje[i].Url,
Descripction: ”,
Points: this.array_Lista_canaje[i].Points,
Date: ’25/12/2019′,
Ocurrences: 1
};
this.arrayAgrupado.push(this.datosCompra);
i++;
}

this.datoBusqueda = this.arrayAgrupado.filter(data => data.Name === this.array_Lista_canaje[i].Name)[0];
if (this.datoBusqueda === undefined) {
this.datosCompra = {
Id: this.array_Lista_canaje[i].IDReward,
Name: this.array_Lista_canaje[i].Name,
Url: this.array_Lista_canaje[i].Url,
Descripction: ”,
Points: this.array_Lista_canaje[i].Points,
Date: ’25/12/2019′,
Ocurrences: 1
};
this.arrayAgrupado.push(this.datosCompra);
} else {
for (let j = 0; j < this.arrayAgrupado.length; j++) {
if (this.datoBusqueda.Name === this.arrayAgrupado[j].Name) {
this.arrayAgrupado[j].Ocurrences = this.arrayAgrupado[j].Ocurrences + 1;
}
}
}
}
}
}

 

Entradas relacionadas

Descubre en 5 minutos las áreas de tu empresa puedes mejorar