Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何迭代对象';javascript中的属性是否向后?_Javascript - Fatal编程技术网

我如何迭代对象';javascript中的属性是否向后?

我如何迭代对象';javascript中的属性是否向后?,javascript,Javascript,例如,我已经有一个填充了有序键值的对象,我可以在语句中用向前迭代它的键: var keyvalues = {"key1":"value1","key2":"value2","key3":"value3"}; for(var key in keyvalues) { var value = keyvalues[key]; ............. } 现在我想向后迭代键像'key3','key2','key1',有没有神奇的方法可以做到这一点?对于。。。在循环中。 等等,什么? 对象

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

var keyvalues = {"key1":"value1","key2":"value2","key3":"value3"};
for(var key in keyvalues)
{
   var value = keyvalues[key];
   .............
}
现在我想向后迭代键像'key3','key2','key1',有没有神奇的方法可以做到这一点?

对于。。。在循环中。 等等,什么? 对象键的“顺序”中没有逻辑。如果您愿意,您可以抓取它们,然后对它们使用
.sort
。在迭代算法中,
为…明确地告诉我们这一点:

未指定枚举属性的机制和顺序(第一个算法中的步骤6.a,第二个算法中的步骤7.a)

您有哪些选择: 在JavaScript中,大多数时间顺序列表由数组表示。如果您的情况与有序列表类似,您可以使用数组:

var values= ["key1","key2","key3"];
for(var i=0;i<values.length;i++){
   values[i];// order is guaranteed here.
}

注意:您可以将比较器传递给
.sort
,并让它为您反转它,而不是链接-这可能是更好的做法。我这样做是为了教学目的。

您可以使用
var-keys=Objects.keys(keyvalues.sort()
获取对象的所有键,然后只需在
中对其进行循环(int=keys.length;I>0;I--)
循环访问原始对象,就像循环中的so
value=object[keys[I]
一样


EDIT:
对象返回的键数组添加了
sort
函数调用。键

枚举对象不能保证特定的顺序。。。如果需要将它们保持在特定的顺序中,可以使用数组。另外还需要注意的是:
对象返回的顺序。键
不能保证。那么,如何在具有动态变化键的对象中反向迭代?@Legion您可以对它们进行排序-请参阅我的答案。键以key1、key2、key3的顺序迭代的事实完全是巧合——它的实现细节可能会在任何一天发生变化。
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.
}
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