Due o più array JavaScript possono essere uniti (merge) con il metodo concat:
JavaScript
var a = [{p:1},{p:4},{p:7}];
var b = [{p:3},{p:5},{p:9}];

var c=a.concat(b);
la variabile d conterrà:
JavaScript
[{p:1},{p:4},{p:7},{p:3},{p:5},{p:9}]
il metodo concat crea un nuovo array che è l'unione dei due precedenti, non modifica gli array esistenti.
In questo caso, avendo essendo un array di oggetti, viene copiato il puntatore agli oggetti, ma l'oggetto è sempre lo stesso. Se modifico c[0].p anche a[0].p sarà modificato.
posso passare più array al metodo concat:
JavaScript
a.concat(b, x, y, z, ...)

Posso successivamente ordinarlo tramite sort passando una una funzione anonima come argomento:
JavaScript
c.sort(function(a,b){return a.p - b.p})
in questo caso l'ordinamento è ascendente (ascending) e la variabile c conterrà:
JavaScript
[{p:1},{p:3},{p:4},{p:5},{p:7},{p:9}]
che può essere invertito (descending):
JavaScript
c.reverse()
e darà come risultato:
JavaScript
[{p:9},{p:7},{p:5},{p:4},{p:3},{p:1}]
Il metodo reverse, come sort, non crea un nuovo array ma agisce e modifica l'esistente.
lo stesso risultato (descending) si può ottenere cambiando il valore di ritorno della funzione di sort da a.p - b.p a b.p - a.p:
JavaScript
var c=a.concat(b);
c.sort(function(a,b){return b.p - a.p})
Potrebbe interessarti anche: