我是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”数组中随机选择一张卡片。我有两个问题:
我正在尝试编写一个可以通过“deckValues”对象并返回它找到的值的函数。我将如何查看“deckValues”对象以查找已处理的卡的名称,然后返回该相关值?
我是多余的,只是为了名称而拥有一个数组,并且有一个名称已经包含与之关联的值的对象?
答案 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);