【问题标题】:How to look through key/value pairs in object for specific key?如何通过对象中的键/值对查看特定键?
【发布时间】:2016-10-11 22:03:16
【问题描述】:

我是 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,
};

我编写了一个“deal”函数,它从“deckNames”数组中随机选择一张牌。我有两个问题:

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

  2. 我是否是多余的,因为我有一个仅用于名称的数组,并且有一个对象,其名称已经具有与它们关联的值?

【问题讨论】:

  • 只需使用 deckValues["s8"] 。我的意思是,你可能会得到道具 obj["string"]
  • 您似乎忘记显示what you've tried,所以这是off-topic (#1)

标签: javascript arrays object


【解决方案1】:

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);
}

【讨论】:

  • 非常感谢!
【解决方案2】:

试试:

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

这将记录值“11”,依此类推。

是的,很可能你可以取消deckNames。

【讨论】:

    【解决方案3】:

    自动化版本。

    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);

    【讨论】:

      猜你喜欢
      • 2020-06-14
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 2018-01-30
      • 2018-10-17
      • 2015-10-07
      • 1970-01-01
      相关资源
      最近更新 更多