sorted = Object.keys(PLAYER_LIST).sort(function(a,b){return a.score - b.score}); // have key value
console.log(PLAYER_LIST[sorted[0]].team); // result:"A"
for(var loop=0; loop<=sorted.length; loop++) {
if(PLAYER_LIST[sorted[loop]].team == "A") { // error
some code...
}
}
当我这样排序时。 console.log运行良好。但如果句子不起作用。我收到错误消息。我不知道为什么。请帮帮我。
if(PLAYER_LIST[sorted[loop]].team == "A") {
^
TypeError: Cannot set property 'team' of undefined
答案 0 :(得分:0)
你的循环走得太远了
for (var loop = 0; loop <= sorted.length; loop++) {
// ^^ here
数组长度为空时从零开始,如果数组包含一个项目则为1
。
如果您有阵列
var array = ['a']
数组基于零,因此第一项也是唯一一项是array[0]
,长度为1
当你迭代并且你一直走到数组长度时,你会过多地使用一个索引,并且你最终会尝试获得array[1]
,而这个数据并不存在。
你想要的是
for (var loop = 0; loop < sorted.length; loop++) {...