6
votes

Comment réorganiser cette matrice en JavaScript en fonction d'un autre tableau?

[ 
            { name: 'alex', id: '1'},
            { name: 'bob', id: '2' },
            { name: 'kat', id: '3' },
            { name: 'jess', id: '4'},
          ] 

0 commentaires

4 Réponses :


5
votes

Voici un code qui le ferait:

var i, d = {}, result = [];
for(i=0; i<friends.length; ++i)
{
    d[friends[i].id] = friends[i];
}

for(i=0; i<real_order.length; ++i)
{
    result.push(d[real_order[i]]);
}


1 commentaires

Trop rapide, la même solution que j'avais proposée



0
votes

Assurez-vous que real_order code> est dans la portée globale et cela devrait le faire:

friends.sort(function(a, b) {
    if (real_order.indexOf(a.id) > real_order.indexOf(b.id)) {
        return 1;
    }else{
        return -1;
    }
});


0 commentaires

0
votes

une solution de commande. Ugly comme jQuery, mais des gens comme John Resig adorent ce style pour une raison quelconque :) xxx


1 commentaires

Je suis à peu près sûr que c'est plus efficace en JavaScript



4
votes

Les tableaux peuvent être triés à l'aide de votre propre algorithme de tri personnalisé, vous n'avez donc pas besoin de real_order . C'est la façon dont je le ferais ( EDIT : Ajout du délégué de tri pour le tri décroissant): XXX


0 commentaires