【发布时间】:2014-08-28 13:20:08
【问题描述】:
当我使用节点运行此文件时,有人可以解释为什么一个值返回为未定义而另一个未包含在列表中。
- 0 凸轮
- 1 道格
- 2 迦勒
- 3 大卫
- 4 凯利
- 5 阿帕纳
- 0 凸轮
- 1 道格
- 2 未定义
-
3 大卫
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]); }
【问题讨论】:
-
Array.prototype.sort就位。 -
你应该停止使用
for ... in来遍历 JavaScript 数组。 -
对有序集合使用数组而不是对象,或者随意重新发明轮子。
-
@pointy:想解释一下为什么?
-
@defau1t JavaScript 与 PHP 不同 - 规范甚至不保证
for ... in以任何特定顺序显示属性名称!这也会导致 V8 的优化问题。
标签: javascript arrays sorting hashmap associative-array