按属性值排序对象,但不使用数组

时间:2016-08-08 21:06:10

标签: javascript sorting

我想对Javascript对象进行降序排序,但我看到的所有解决方案都将它们转换为数组(我不想要)。这是我的目标:

var obj = {
    "and":2,
    "two":1,
    "too":1,
    "mother":3
}

我希望这个对象看起来像这样:

var obj = {
    "mother":3
    "and":2,
    "two":1,
    "too":1
}

该物业的名称排序并不重要,因此我并不关心它two,too。我所关心的只是物业的价值被分类。 ES6友好的单线程会很棒,但绝对不需要。

感谢。

编辑:我终于有了一些工作,虽然它真的非常糟糕......非常糟糕。

function sortObject(obj) {
    var sortable=[];
    var newObject = {};
    for(var key in obj)
        if(obj.hasOwnProperty(key))
            sortable.push([key, obj[key]]); // each item is an array in format [key, value]
    sortable.sort(function(a, b) {
        return b[1]-a[1];
    });
    for(i = 0; i < sortable.length; i++) {
        newObject[sortable[i][0]] = sortable[i][1];
    }
    return newObject;
}

我的意思是,它是有效的,这一切都很重要。

0 个答案:

没有答案