我正在使用javascript关联数组(arr)并使用此方法循环遍历它。
for(var i in arr) {
var value = arr[i];
alert(i =") "+ value);
}
问题在于项目的顺序对我来说很重要,它需要从最后一个循环到第一个,而不是像现在一样循环到最后一个。
有办法做到这一点吗?
答案 0 :(得分:43)
四件事:
JavaScript有数组(整数索引[见下面的注释])和对象(字符串索引)。你在另一种语言中称之为关联数组的东西在JS中称为对象。
如果您循环浏览对象,请使用:hasOwnProperty
。
JavaScript不保证对象中键的顺序。如果您关心订单,请改用数组。
如果您使用的是普通数组,请执行以下操作:
for (var i = arr.length - 1; i >= 0; i--) {
//do something with arr[i]
}
答案 1 :(得分:14)
使用按相反顺序按住键的临时数组:
var keys = new Array();
for (var k in arr) {
keys.unshift(k);
}
for (var c = keys.length, n = 0; n < c; n++) {
alert(arr[keys[n]]);
}
答案 2 :(得分:3)
对于普通数组,我会这样做:
var i = arr.length;
while (i--) {
var value = arr[i];
alert(i =") "+ value);
}
这比“for”循环更快。
答案 3 :(得分:2)
在现代浏览器中,您现在可以使用Object.keys
来获取属性数组,并以相反的顺序逐步执行它,从而允许您跳过初步密钥收集循环。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
var keys = Object.keys(subject);
for (var i = keys.length-1; i >= 0; i--) {
var k = keys[i],
v = subject[k];
console.log(k+":",v);
}