2013-05-27 51 views
0

假設我有一個全局對象,看起來像這樣:最快的方式

var TheFruits = { 

    323: {}, 
    463: {}, 
    223: {} ..... // can be thousands of properties 
} 

基本上,鍵ID和值本身是對象。現在假設我有一個傳遞給函數的ID數組,並且我希望該函數返回一個引用數組,以匹配全局對象的ID(即沒有深度副本)的值。事情是這樣的:

function GetReferences(TheArrayOfIDs) { 

    var TheArrayOfReferences = []; 

    return TheArrayOfReferences; 
} 

現在我知道我可以寫一個for循環,在TheArrayOfIDs迭代,並且然後遍歷在每次迭代的對象鍵,但那麼這是一個循環內的循環。所以我正在尋找這樣做的最快方法,並且jquery可用。

基本上,如果TheArrayOfIDs = [323, 463, 223];然後TheArrayOfReferences =[TheFruit.323, TheFruit.463, TheFruit.223];

感謝。

回答

2

你並不需要第二個循環:

var results = []; 
for (var i = 0; i < ids.length; i++) 
    results.push(fruits[ids[i]]); 
+0

好的,謝謝你的回答;不需要第二個循環,upvoted和接受是因爲原生javascript。 – frenchie

2

你所要做的只有一個關鍵的查找是內置的循環:

var TheArrayOfReferences = TheArrayOfIDs.map(function(id){return TheFruits[id]}); 
+0

好的,謝謝你的回答;不需要第二個循環。 Upvoted:我也愛jquery。 – frenchie

+1

請注意,我不使用jQuery。這是純粹的原生JavaScript。 JavaScript太棒了。 –

+0

啊我明白了:SLaks的答案中有什麼不同? – frenchie

1

類似的東西應該工作:

var i = 0, l = TheArrayOfIDs.length; 
for (i = 0; i < l; i++) 
    TheArrayOfReferences.push(TheFruits[TheArrayOfIDs[i]]); 
+1

它應該是'.push(TheFruits [ TheArrayOfIds [i]])' – 2013-05-27 14:46:16

+0

@squint True,編輯。 – blue112

+0

Upvoted,你很近。 – frenchie