848 votes

Objet de JavaScript de tri par clé

Vous devrez être en mesure de pouvoir trier un objet JavaScript basé sur la clé.

Donc ce qui suit :

Deviendrait :

263voto

Matt Ball Points 165937

Les objets JavaScript1 ne sont pas commandés. Il est inutile d'essayer de "trier". Si vous souhaitez effectuer une itération sur les propriétés d'un objet, vous pouvez trier les clés puis de récupérer les valeurs associées:

var myObj =
    {
        'b': 'asdsadfd',
        'c': 'masdasaf',
        'a': 'dsfdsfsdf'
    },
    keys = [],
    k, i, len;

for (k in myObj)
{
    if (myObj.hasOwnProperty(k))
    {
        keys.push(k);
    }
}

keys.sort();

len = keys.length;

for (i = 0; i < len; i++)
{
    k = keys[i];
    alert(k + ':' + myObj[k]);
}

Démo →


Suppléant de mise en œuvre à l'aide de Object.keys fanciness:

var myObj =
    {
        'b': 'asdsadfd',
        'c': 'masdasaf',
        'a': 'dsfdsfsdf'
    },
    keys = Object.keys(myObj),
    i, len = keys.length;

keys.sort();

for (i = 0; i < len; i++)
{
    k = keys[i];
    alert(k + ':' + myObj[k]);
}

http://jsfiddle.net/mattball/mvrWb


1ne Pas être pédant, mais il n'y a pas une telle chose comme un objet JSON.

29voto

Ashit Vora Points 1244

Cela fonctionne pour moi

 /**
 * Return an Object sorted by it's Key
 */
var sortObjectByKey = function(obj){
    var keys = [];
    var sorted_obj = {};

    for(var key in obj){
        if(obj.hasOwnProperty(key)){
            keys.push(key);
        }
    }

    // sort keys
    keys.sort();

    // create new array based on Sorted Keys
    jQuery.each(keys, function(i, key){
        sorted_obj[key] = obj[key];
    });

    return sorted_obj;
};
 

21voto

user2658401 Points 39

Supposons qu’il pourrait être utile dans le débogueur de Visual Studio qui montre les propriétés de l’objet non ordonnée.

20voto

Brian M. Hunt Points 12506

À l’aide de lodash cela fonctionne :

Juste à réfléchir.

1voto

ScottD Points 164

Très bon exemple de tri des clés d’objet ici : Iterate sur un tableau associatif de Javascript dans un ordre trié

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X