[英]Loop through associative array in reverse
我正在使用 javascript 關聯數組 (arr) 並使用此方法循環遍歷它。
for(var i in arr) {
var value = arr[i];
alert(i =") "+ value);
}
問題是項目的順序對我來說很重要,它需要從最后到第一個循環,而不是像目前那樣從第一個到最后一個。
有沒有辦法做到這一點?
四件事:
JavaScript 有數組(整數索引 [見下面的評論])和對象(字符串索引)。 在另一種語言中你稱之為關聯數組的東西在 JS 中被稱為對象。
如果您正在遍歷一個對象,請使用: hasOwnProperty
。
JavaScript 不保證對象中鍵的順序。 如果您關心順序,請改用數組。
如果您使用的是普通數組,請執行以下操作:
for (var i = arr.length - 1; i >= 0; i--) {
//do something with arr[i]
}
警告:這個答案很古老。
如果您是為了快速解決問題,請參考下面更好的答案。
原答案保留,原因。 見評論。
使用以相反順序保存鍵的臨時數組:
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]]);
}
對於普通數組,我會這樣做:
var i = arr.length;
while (i--) {
var value = arr[i];
alert(i =") "+ value);
}
這比“for”循環快。
在現代瀏覽器中,您現在可以使用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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.