Ответ 1
Использование временного массива, удерживающего клавиши в обратном порядке:
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]]);
}
Я использую ассоциативный массив javascript (arr), и я использую этот метод для его прокрутки.
for(var i in arr) {
var value = arr[i];
alert(i =") "+ value);
}
Проблема в том, что порядок элементов важен для меня, и ему нужно переходить от последнего к первому, а не сначала продолжать, как это происходит в настоящее время.
Есть ли способ сделать это?
Использование временного массива, удерживающего клавиши в обратном порядке:
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]]);
}
Четыре вещи:
JavaScript имеет массивы (integer-indexed [см. комментарии ниже]) и объекты (с индексом строки). То, что вы бы назвали ассоциативным массивом на другом языке, называется объектом в JS.
Если вы перебираете объект, используйте: hasOwnProperty
.
JavaScript не гарантирует порядок ключей в объекте. Если вы заботитесь о порядке, используйте массив.
Если вы используете обычный массив, сделайте следующее:
for (var i = arr.length - 1; i >= 0; i--) {
//do something with arr[i]
}
Для нормального массива я бы сделал следующее:
var i = arr.length;
while (i--) {
var value = arr[i];
alert(i =") "+ value);
}
Это быстрее, чем цикл "для".
В современных браузерах теперь вы можете использовать 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);
}