【发布时间】:2015-12-18 16:57:58
【问题描述】:
我有一个名为“团队”的对象,每个团队名称都有一组嵌套对象。在那个团队名称中,我有球员,我希望对每个数组进行动态排序,而不是为每个 team.xxxx.player.sort();
var team = {
fnatic: {
team: "Fnatic",
player: ["Olofmeister", "JW", "Pronax", "Krimz", "Flusha"]
},
titan: {
team: "Titan",
player: ["Ex6Tenz", "shox", "RpK", "SmithZz", "Maniac"]
},
nip: {
team: "Ninjas in Pyjamas",
player: ["GeT_RiGhT", "f0rest", "allu", "friberg", "XizT"]
},
nv: {
team: "EnVy Us",
player: ["kennyS", "apeX", "NBK-", "Happy", "kioShiMa"]
},
vp: {
team: "Virtus Pro",
player: ["PashaBiceps", "Taz", "byali", "Snax", "Xx"]
}
};
我正在尝试按字母顺序对玩家数组进行排序(team.XXXX.player)。我发现我可以通过键入来做到这一点
team.fnatic.player.sort();
对于每个单独的团队,但我想迭代对象,因为我将有大量的团队与球员进行排序。
感谢Arne Martin Aurlien on his blog and his object sort function,这与我在这里搜索和阅读的内容一样接近:
for (var obj in team) {
if (team.hasOwnProperty(obj)) {
console.log(obj, team[obj].player); //line 107
[obj].player = sortObj(team[obj].player);
console.log(obj, team[obj].player); //line 109
}
}
不幸的是,这仍然只打印出未排序的数组:
fnatic ["Olofmeister", "JW", "Pronax", "Krimz", "Flusha"] script.js:107
fnatic ["Olofmeister", "JW", "Pronax", "Krimz", "Flusha"] script.js:109
titan ["Ex6Tenz", "shox", "RpK", "SmithZz", "Maniac"] script.js:107
titan ["Ex6Tenz", "shox", "RpK", "SmithZz", "Maniac"] script.js:109
...etc for each team
我觉得我在这里遗漏了一些简单的东西。谁能帮帮我?
【问题讨论】:
-
我相信
sort函数不会改变原始值。如果这是您想要的行为,您需要将.sort()的输出分配回对象
标签: javascript arrays sorting object nested