2015-11-23 57 views
-2

,這可能是一個愚蠢的問題,但我堅持:(從數組的鍵訪問對象的值

我有一個對象和數組,一個是這樣的

var pwData = { 
    "2_6": { 
    "name":"ggregreg", 
    "location":"Manchester", 
    }, 
    "2_70": { 
    "name":"rwerwer", 
    "location":"Solihull" 
    }, 
    "2_59": { 
    "name":"Amy", 
    "location":"yjhtgeg" 
    } 

數據,另一個是的引用的命令,這樣

var pwOrder = ["2_70", "2_59", "2_6"]; 

然後我試圖安慰在pwOrder陣列的順序登錄的一些數據,使用來自數據PWDATA。如此。

$.each(pwOrder, function(k) 
{ 
    console.log(pwData[k].name); 
} 

在我的腦海中,應該按照pwOrder定義的順序記錄pwData中的人名 - 但它不起作用:(任何幫助非常感謝,拉我的頭髮!

+1

當你說這是行不通的完成。什麼或不會發生,你期望會發生什麼?任何錯誤? –

+3

那是'$ .each' jQuery嗎?如果這樣'k'可能是索引而不是jQuery決定切換其他地方常用的順序的值。 –

+0

還有一點值得思考一下,你可以怎麼想到這一點......如果你在你的迭代函數中放置一個斷點,你將能夠在每次迭代中檢查'k'的值,並且很快就會意識到問題是。在你現有的日誌之前,你可以用'console.log(k)'完成相同的操作。 –

回答

0

詹姆斯是對的。

$.each(pwOrder, function(k) 
{ 
    console.log(pwData[pwOrder[k]]['name']); 
}); 

工程。

3

kjqueryeach回調將是index,而不是關鍵本身。

var pwData = { 
 
    "2_6": { 
 
    "name": "ggregreg", 
 
    "location": "Manchester", 
 
    }, 
 
    "2_70": { 
 
    "name": "rwerwer", 
 
    "location": "Solihull" 
 
    }, 
 
    "2_59": { 
 
    "name": "Amy", 
 
    "location": "yjhtgeg" 
 
    } 
 
}; 
 
var pwOrder = ["2_70", "2_59", "2_6"]; 
 

 
$.each(pwOrder, function(index, key) { 
 
    console.log(pwData[key].name); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

jquery不需要這個,但是,它可以使用本機javascipt

var pwData = { 
 
    "2_6": { 
 
    "name": "ggregreg", 
 
    "location": "Manchester", 
 
    }, 
 
    "2_70": { 
 
    "name": "rwerwer", 
 
    "location": "Solihull" 
 
    }, 
 
    "2_59": { 
 
    "name": "Amy", 
 
    "location": "yjhtgeg" 
 
    } 
 
}; 
 
var pwOrder = ["2_70", "2_59", "2_6"]; 
 

 
pwOrder.forEach(function(key) { 
 
    console.log(pwData[key].name); 
 
});