我有一个如下所示的对象。如何根据嵌套对象中的公共属性对类似的内容进行排序。我期望的输出是玩家 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;
});
My data
var data =
{
player1:
{ score: 4,
cards: 6 },
player2:
{ score: 6,
cards: 4}
}
您需要使用对象而不是键的属性对数据进行排序,然后必须将其恢复,因为您需要降序排序。
return data[b].score - data[a].score;
// ^^^^^^^ ^^^^^^^ object
// ^ ^ descending
我建议使用空对象并按顺序键插入属性。
var data = { player1: { score: 4, cards: 6 }, player2: { score: 6, cards: 4 } },
sorted = {};
Object
.keys(data).sort(function(a, b){
return data[b].score - data[a].score;
})
.forEach(function(key) {
sorted[key] = data[key];
});
console.log(sorted);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)