Minitip: javascript – ordenar y borrar duplicados de vectores de tipos complejos

Al parecer ordenar vectores de tipos complejos es un pelín más complicado de lo que debería ser, y mientras sacan una función anónima que lo haga, vamos a tener que tirar de picar código.

Pongamos como ejemplo los elementos a mostrar en un menú desplegable, que son objetos con este aspecto: { label: “string1”, value: “string2 }
Queremos quitar los duplicados. No los elementos con clave duplicada, no, los elementos que tengan todos los campos iguales.

Bien, pues este cachito de código es la solución más compacta que he encontrado:


// remove duplicates from array elementos
var obj = {};
for ( var i=0, len=elementos.length; i < len; i++ ) {
obj[elementos[i]['label']] = elementos[i];
}
elementos = new Array();
for ( var key in obj ) {
elementos.push(obj[key]);
}

 
Y ordenar ese tipo de vectores según uno de sus campos – un campo que sea comparable – es bastante más sencillo. Solo hay que redefinir el sort añadiendo un pelín de literatura, de una forma muy similar a como se hizo en este post anterior, que también va de ordenar vectores de tipos complejos, pero en java.


elementos.sort((a, b) => (a.label > b.label) ? 1 : -1);

 
Ese código ordenaría por label, y si se quisiera ordenar por value, pues habría que poner value en su lugar.

 

************************************************************

Espero que esta entrada pueda ser de utilidad, y si no, como siempre, aquí tenéis un gato para compensar.

Deja un comentario

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