在数组中获取对象“值”

时间:2013-08-01 19:54:31

标签: javascript arrays javascript-objects

我正在创建一个二十一点游戏,其中我的牌组由一个数组中的对象(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]];
    }
}

1 个答案:

答案 0 :(得分:3)

如果你对此数据不太了解,你可能会改变你的数组。而不是每张卡都是

{'name': value}

你可以拥有每张卡

{'type': name, 'value': number}
例如,拥有3个心:

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

然后,您可以通过

访问该值
myHand[card.value]

的名字
myHand[card.type]