Řazení objektu JavaScriptu podle názvu vlastnosti

Chvíli jsem hledal a chtěl způsob, jak třídit objekt Javascriptu takto:

{
    method: 'artist.getInfo',
    artist: 'Green Day',
    format: 'json',
    api_key: 'fa3af76b9396d0091c9c41ebe3c63716'
}

a řazení je abecedně podle názvu, abyste získali:

{
    api_key: 'fa3af76b9396d0091c9c41ebe3c63716',
    artist: 'Green Day',
    format: 'json',
    method: 'artist.getInfo'
}

Nemohu najít žádný kód, který by to udělal. Může mi někdo pomoci?

Odpověď

AKTUALIZACE z komentářů:

Tato odpověď je zastaralá. V objektech ES6 jsou nyní klíče uspořádány. Aktuální odpověď naleznete v této otázce

Podle definice je pořadí klíčů v objektu nedefinované , takže to pravděpodobně nebudete moci udělat způsobem, který je odolný vůči budoucnosti. Místo toho byste měli přemýšlet o řazení těchto klíčů, když je objekt skutečně zobrazen uživateli. Bez ohledu na to, jaké řazení interně používá, je vlastně jedno.

Podle konvence si většina prohlížečů zachová pořadí klíčů v objektu v pořadí, v jakém byly přidány. Můžete to udělat, ale neočekávejte, že to bude fungovat vždy:

function sortObject(o) {
    var sorted = {},
    key, a = [];

    for (key in o) {
        if (o.hasOwnProperty(key)) {
            a.push(key);
        }
    }

    a.sort();

    for (key = 0; key < a.length; key++) {
        sorted[a[key]] = o[a[key]];
    }
    return sorted;
}