例如,我已经有一个填充了有序键值的对象,我可以在 语句中迭代它的键 使用 转发 for :

var keyvalues = {"key1":"value1","key2":"value2","key3":"value3"};
for(var key in keyvalues)
{
   var value = keyvalues[key];
   .............
}

现在我想像 'key3'、'key2'、'key1' 那样向后迭代 的键 ,有没有什么神奇的方法可以做到这一点?

最佳答案

for... in 循环中无法保证顺序。
等等,什么?
对象键的“顺序”没有逻辑。如果您愿意,可以获取它们,然后对它们使用 .sortlanguage specificationfor...in 迭代算法中明确告诉我们这一点:

你有哪些选择:
在 JavaScript 中,大多数情况下有序列表由 数组 表示。如果像您的情况下的有序列表,您可以使用数组:

var values= ["key1","key2","key3"];
for(var i=0;i<values.length;i++){
   values[i];// order is guaranteed here.
}
由于订单有保证,您还可以轻松地 reverse 它:
var values= ["key1","key2","key3"].reverse();//reverse is an array method
for(var i=0;i<values.length;i++){
   values[i];// order is guaranteed here.
}
如果你已经有一个 对象 你可以根据一些标准获取它的键和 .sort 它们,例如 - 按字典顺序:
var obj = {"key1":"value1","key2":"value2","key3":"value3"};
var keys = Object.keys(obj).sort().reverse(); // see note
for(var i=0;i<keys.length;i++){
    console.log(keys[i]);
}
// will output key3, key2, key1
注意:您可以将比较器传递给 .sort 并让它为您反转它而不是链接 - 这可能是更好的做法。为了教学目的,我保持这种方式。

10-07 19:42
查看更多