【发布时间】:2017-07-24 13:16:02
【问题描述】:
根据我的研究,for..in 循环中的键顺序应该是未定义/不可靠的——但是,如果不受影响,应该是插入顺序——但不是:
我从数据库中获取这个数据对象,按名称排序:
var travel = {
'2': { name: 'bus', price: 10 },
'3': { name: 'foot', price: 0 },
'1': { name: 'taxi', price: 100 }
}
for (way in travel) console.log( travel[way].name ) // => taxi, bus, foot
按键按数字排序(在所有 Chrome、Firefox 和 Edge 中)。为什么?
而且(因为我错了)我如何遍历它们按.name 排序?
【问题讨论】:
-
如果您需要订购它们,请在
Object.values()上使用sort()。 -
我猜可能会发生某种内部优化,它看起来像一个数组
-
是的 - 如果您添加一个不是数字的键,它会按预期工作
-
结果是订单未定义,永远不应该依赖
标签: javascript sorting for-in-loop