que tiene una matriz de objetos de la siguiente forma:Javascript función de comparación de ordenación personalizada - ordenar una matriz ordenada
arr[0] = { 'item1' : 1234, 'item2' : 'a string' };
puedo ordenar primero por 'item1'
que es sencillo. Ahora quiero ordenar arr
(que está ordenada por 'item1'
) de nuevo, pero esta vez por 'item2'
pero solo para los elementos donde 'item1'
es el mismo. La matriz final tendría el siguiente aspecto:
arr = [
{ 'item1' : 1234, 'item2' : 'apple' },
{ 'item1' : 1234, 'item2' : 'banana' },
{ 'item1' : 1234, 'item2' : 'custard' },
{ 'item1' : 2156, 'item2' : 'melon' },
{ 'item1' : 4345, 'item2' : 'asparagus' }
];
Traté de escribir una función de clasificación para el segundo caso de este modo:
arr.sort(function(a,b){
if(a.item1 === b.item1){
return a.item2 > b.item2 ? 1 : a.item2 < b.item2 : -1 : 0;
}
});
podría combinar los dos tipos en una función para obtener la matriz ordenada definitiva pero habrá casos en los que tendré que ordenar por 'item1'
o simplemente 'item2'
.
si se las arregló para ordenar por elemento1, elemento2, y dos de ellos, entonces, ¿qué lo preguntas exactamente? –
Así que es como escribir un patrón de decorador donde digo "new sortByItem2 (new sortByItem1 (arr))". También quiero usarlo como sortByItem1 (arr) o sortByItem2 (arr) o "new sortByItem1 (new sortByItem2 (arr))" – fenderplayer