如何查看对象中的键/值对以获取特定键?

时间:2016-10-11 22:03:16

标签: javascript arrays object

我是Javascript的新手,只是学习基础知识。假设我有一个数组代表卡片中的卡片名称,如下所示:

var deckNames = [
  "sA", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "sJ", "sQ", "sK",
  "hA", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "h10", "hJ", "hQ", "hK",
  "cA", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10", "cJ", "cQ", "cK",
  "dA", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "d10", "dJ", "dQ", "dK",
  ];

以及一个对象,其中包含牌组中每张牌的值,如下所示:

var deckValues = {
  sA: 11, s2: 2, s3: 3, s4: 4, s5: 5, s6: 6, s7: 7, s8: 8, s9: 9, s10: 10, sJ: 10, sQ: 10, sK: 10,
  hA: 11, h2: 2, h3: 3, h4: 4, h5: 5, h6: 6, h7: 7, h8: 8, h9: 9, h10: 10, hJ: 10, hQ: 10, hK: 10,
  cA: 11, c2: 2, c3: 3, c4: 4, c5: 5, c6: 6, c7: 7, c8: 8, c9: 9, c10: 10, cJ: 10, cQ: 10, cK: 10,
  dA: 11, d2: 2, d3: 3, d4: 4, d5: 5, d6: 6, d7: 7, d8: 8, d9: 9, d10: 10, dJ: 10, dQ: 10, dK: 10,
};

我写了一个“交易”功能,可以从“deckNames”数组中随机选择一张卡片。我有两个问题:

  1. 我正在尝试编写一个可以通过“deckValues”对象并返回它找到的值的函数。我将如何查看“deckValues”对象以查找已处理的卡的名称,然后返回该相关值?

  2. 我是多余的,只是为了名称而拥有一个数组,并且有一个名称已经包含与之关联的值的对象?

3 个答案:

答案 0 :(得分:2)

可以通过两种方式按名称访问deckValues属性:

var storeValue = deckValues.sA;
var storeValue = deckValues['sA'];

因此,要使用deckNames数组查看值,您可以执行此操作:

var storeValue = deckValues[deckNames[0]];

您可以轻松地将上述语句放在循环中,并将0替换为与循环迭代的变量。

你真的不需要有一个数组和一个可以遍历对象属性的对象。

for(var name in deckValues) {
    var storeValue = deckValues[name];
    console.log('Deck name is ' + name + ' and the value is ' + storeValue);
}

答案 1 :(得分:1)

尝试:

console.log(deckValues["sA"]);

将记录值" 11",依此类推。

是的,您可以取消使用deckNames。

答案 2 :(得分:1)

自动版本。

var deckNames = [
  "sA", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "sJ", "sQ", "sK",
  "hA", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "h10", "hJ", "hQ", "hK",
  "cA", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10", "cJ", "cQ", "cK",
  "dA", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "d10", "dJ", "dQ", "dK"
  ];
  
var deckValues = {
  sA: 11, s2: 2, s3: 3, s4: 4, s5: 5, s6: 6, s7: 7, s8: 8, s9: 9, s10: 10, sJ: 10, sQ: 10, sK: 10,
  hA: 11, h2: 2, h3: 3, h4: 4, h5: 5, h6: 6, h7: 7, h8: 8, h9: 9, h10: 10, hJ: 10, hQ: 10, hK: 10,
  cA: 11, c2: 2, c3: 3, c4: 4, c5: 5, c6: 6, c7: 7, c8: 8, c9: 9, c10: 10, cJ: 10, cQ: 10, cK: 10,
  dA: 11, d2: 2, d3: 3, d4: 4, d5: 5, d6: 6, d7: 7, d8: 8, d9: 9, d10: 10, dJ: 10, dQ: 10, dK: 10
};

var givenKey = 'c6'; //you can change this 
var result;

for (var key in deckValues) {
	if (key == givenKey) {
  result = deckValues[key];
  }
}

console.log(result);