当我使用节点运行此文件时,有人可以解释为什么一个值返回为未定义而另一个值未包含在列表中。
3 David
var queue = {};
queue[0] = 'Cam';
queue[1] = 'Doug';
queue[2] = 'Caleb';
queue[3] = 'David';
queue[4] = 'Kelli';
queue[5] = 'Aparna';
var sorted_keys = Object.keys(queue).sort();
for (var key in sorted_keys) {
console.log(key + " " + queue[key]);
}
for (var key in sorted_keys) {
if (key == 2 || key == 4) { // trying to mock disable accounts and remove
delete queue[key];
}
}
sorted_keys = Object.keys(queue).sort();
for (var key in sorted_keys) {
console.log(key + " " + queue[key]);
}
答案 0 :(得分:1)
您的主要问题是您正在迭代sorted_keys
这是一个键数组,并且您尝试使用数组中的索引值来索引queue
对象,但那是数组索引,而不是queue
对象的密钥。您需要从数组中获取实际值,而不是数组中的索引,因为queue
对象中的键是。
你也不应该使用for/in
来迭代数组,尽管这并不是实际导致问题的原因。
如果您将上一次迭代更改为此,您将看到您的期望:
for (i = 0; i < sorted_keys.length; i++) {
key = sorted_keys[i];
console.log(key + " " + queue[key]);
}