2011-05-17 65 views
3

快速菜鳥問題請。通過關鍵字,在Javascript中查找項目

假設我有一個像javsacript對象,因此:

var meh=[["cars",27], ["bikes",85], ["skates",4]]; 

要經過每一個數據在這裏反對,我可以這樣做:

$.each(meh, function(index,value){   
    console.log(value) //returns ["cars",27] etc.. 
}); 

,並考慮我知道的,說的地方,汽車,我可以做到這一點訪問它:

console.log(meh[0][0]) //shows "Cars" 

當然,如果我想汽車的價值,我需要做到這一點:

console.log(meh[0][1]) //Shows 27 

現在,我有串 - 鍵,像carsbikesskates

但我不能想出這樣的:如何訪問它們各自的價值?

meh["cars"]返回undefined,因爲,據我所知,它無法找到每個對象之外的描述。

我可以做meh[0]["cars"],但它打破了這一點,因爲汽車的位置可能會改變。

我該如何使用鑰匙訪問某個值?

謝謝。

回答

4

如果你有機會獲得代碼,並可以改變的對象,將其更改爲這樣的事情:

meh = { 
    'cars': 27, 
    'bikes': 85, 
    'skates': 4 
}; 

,你可以訪問他們與鍵像

meh["cars"] //will give you 27 

如果您不能更改代碼,那麼我看到的唯一方法是使用jQuery.each並將每個密鑰與您已知的密鑰進行比較並將其分配給一個臨時變量。

+0

我可以更改代碼,如果迭代數組是我的計劃B,如果因此失敗了我 - 一直到現在才發生一次! – LocustHorde 2011-05-17 11:56:55

+0

謝謝你回答。 – LocustHorde 2011-05-17 11:57:17

8

你應該改變的對象

var meh={"cars" :27 , "bikes" :85, "skates" :4}; 

現在,你可以簡單地通過按鍵

alert(meh['cars']); //27 
+0

非常感謝。 – LocustHorde 2011-05-17 11:56:08

3

使用對象,而不是訪問:

var meh = { 
    "cars": 27, 
    "bikes": 85, 
    "skates": 4 
}; 

可以使用迭代它$.each()

$.each(meh, function (key, value) { 
    // key == "cars" and value == 27, etc. 
}); 

訪問值是這樣的:

meh.cars 

這相當於此:

meh["cars"] 

顯然,第二符號可以通過使用變量被使用。

0

你有你的數據結構在一個數組中,所以你總是要通過陣列語法來訪問,例如[0] [1]。 JavaScript中的數組不是關聯的。你可以編寫一個輔助函數,它圍繞數組迭代,尋找你指定的鍵並返回值。或者您可以將您的數據結構更改爲支持密鑰查找的對象。

0

如果您無法更改該對象,則可以創建一個映射使管理索引變得簡單。例如。

map = { 
    'cars': 0, 
    'bikes': 1, 
    'skates': 2 
}; 

然後,你可以這樣做:

alert(meh[map['cars']][1]);