按嵌套属性对对象排序

mo_*_*aat 6 javascript sorting object

我有一个看起来像下面的对象.如何基于嵌套对象中的公共属性对此类事进行排序.我期望的输出是玩家2基于较高分数首先出现.

我的挑战是访问每个对象的属性进行排序.

这是我的想法和尝试,但它没有做排序.

Object.keys(data).sort(function(p1, p2){
    return p1.score - p2.score;
}).forEach(function(key) {
    var value = data[key];
    delete data[key];
    data[key] = value;
});
Run Code Online (Sandbox Code Playgroud)

我的数据

var data =
    { 
      player1:
       { score: 4,
         cards: 6 },
      player2:
       { score: 6,
         cards: 4} 
    }
Run Code Online (Sandbox Code Playgroud)

Nin*_*olz 9

您需要使用对象而不是键的属性对数据进行排序,然后必须将其还原,因为您需要降序排序。

return data[b].score - data[a].score;
//     ^^^^^^^         ^^^^^^^        object
//          ^               ^         descending
Run Code Online (Sandbox Code Playgroud)

我建议使用一个空对象并按有序键插入属性。

return data[b].score - data[a].score;
//     ^^^^^^^         ^^^^^^^        object
//          ^               ^         descending
Run Code Online (Sandbox Code Playgroud)