小编典典

按属性名称对JavaScript对象进行排序

javascript

我已经寻找了一段时间,想要一种对Javascript对象进行排序的方法,如下所示:

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

并按名称的字母顺序排序以获得:

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

我找不到任何可以做到这一点的代码。谁能给我些帮助吗?


阅读 316

收藏
2020-04-25

共1个答案

小编典典

根据定义,键在对象中的顺序是未定义的
,因此您可能无法以适应未来发展的方式进行操作。相反,您应该考虑在实际向用户显示对象时对这些键进行排序。无论它在内部使用什么排序顺序都没有关系。

按照惯例,大多数浏览器将按添加键的顺序保留对象中键的顺序。因此,您可以执行此操作,但不要期望它始终有效:

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;
}
2020-04-25