2013-08-01 147 views
3

我正在創建一個二十一點遊戲,其中的數組中包含對象(cardname:value)。獲取數組中的對象「值」

我想知道是否有一個JavaScript對象的功能,我可以得到一個對象值(在我的情況下,每張卡片的數值得分值),而不必命名鍵(例如:「aced」)?

請參考我的代碼,具體在for循環中;我不知道用什麼來替換「myHand [card [value]]」。

感謝

function shuffle(array) { 
    var m = array.length, t, i; 
    // While there remain elements to shuffle… 
    while (m) { 
    i = Math.floor(Math.random() * m--); 
    t = array[m]; 
    array[m] = array[i]; 
    array[i] = t; 
    } 
    return array; 
} 

var deck = [{"aced": 11}, {"twod": 2}, {"threed": 3}, {"fourd": 4}, {"fived": 5}, {"sixd":6}, {"sevend": 7}, {"eightd": 8}, {"nined": 9}, {"tend": 10}, {"jackd": 10}, {"queend": 10}, {"kingd": 10}, 
{"acec": 11}, {"twoc": 2}, {"threec": 3}, {"fourc": 4}, {"fivec": 5}, {"sixc":6}, {"sevenc": 7}, {"eightc": 8}, {"ninec": 9}, {"tenc": 10}, {"jackc": 10}, {"queenc": 10}, {"kingc": 10}, 
{"aceh": 11}, {"twoh": 2}, {"threeh": 3}, {"fourh": 4}, {"fiveh": 5}, {"sixh":6}, {"sevenh": 7}, {"eighth": 8}, {"nineh": 9}, {"tenh": 10}, {"jackh": 10}, {"queenh": 10}, {"kingh": 10}, 
{"aces": 11}, {"twos": 2}, {"threes": 3}, {"fours": 4}, {"fives": 5}, {"sixs":6}, {"sevens": 7}, {"eights": 8}, {"nines": 9}, {"tens": 10}, {"jacks": 10}, {"queens": 10}, {"kings": 10}]; 

shuffle(deck); 

function userHand() { 
    var myHand = [deck.pop(), deck.pop()]; 
} 

function countScore(myHand) { 
    var total = 0; 
    for (var card in myHand) { 
     total += myHand[card[value]]; 
    } 
} 
+0

如果你不想要鑰匙,爲什麼不把它做成一個簡單的數組? – 2013-08-01 19:58:58

+1

如果你不知道他們的鍵是什麼,那麼你不應該使用鍵/值對。使用數組,如'[「aced」,11]'。然後你可以使用數字索引。或者讓你的對象更加複雜,比如'{card:「aced」,value:11}' –

+1

如果你有一個更好的卡片數據模型,比如'{card:「aced」,value:11} ' – Pointy

回答

3

你可能會改變你的數組,如果你不是太遠了這一點。因此而不是每張卡是

{'name': value} 

你可以有每個卡是

{'type': name, 'value': number} 

例如,有心靈上的3:

{'type': threeh, 'value': 3}. 

然後,你可以訪問值由

myHand[card.value] 

和名稱由

myHand[card.type] 
+0

這是合乎邏輯的,也是合理的!謝謝 – JaTo