javascript - 返回两个项目之间的数值属性
问题描述
我是 JS 新手(第一周),为学校项目做命令行纸牌游戏。我已经能够完成前三个练习(省略了 2 和 3)。
但是,我不明白为什么我无法value
从deck
我四处寻找解决方案,包括:
StackOverflow:比较两个数字字符串值
中等(没有比较卡片的内容。PT2 包括我们没有做的 HTML。):https ://medium.com/@pakastin/javascript-playing-cards-part-1-ranks-and-values-a9c2368aedbd
Stack Overflow(这个问题被否决了):如何在 JavaScript 纸牌游戏中比较 2 张纸牌
我能够搭建甲板(练习 1):
function buildDeck() {
const suits = ['spades', 'hearts', 'diamonds', 'clubs'];
const ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'];
const deck = [];
for (let r = 0; r < ranks.length; r++) {
for (let s = 0; s < suits.length; s++) {
deck.push({ ranks: ranks[r], suits: suits[s], value: r + 1 });
}
}
return deck;
}
console.log(buildDeck())
这将返回每张卡片的ranks
、suits
和value
。
接下来,我尝试解决比较卡片的问题(练习4):
const compare = (firstCard, secondCard) => {
const cardValue = firstCard.value - secondCard.value;
return cardValue;
}
console.log(compare());
但是,当我尝试返回第一张卡减去第二张卡的 value 属性时,出现以下错误:
const cardValue = firstCard.value - secondCard.value;
TypeError: Cannot read property 'value' of undefined
如果我.value
从代码中删除,我当然会得到,NaN
因为数组中没有一个对象可以与之比较。
我被困在这一点上,不知道如何获得卡片之间的区别。非常感谢任何建议/帮助。
解决方案
您需要交出卡片作为参数。
否则,两个参数都有值undefined
,并且该值不是对象。
const compare = (firstCard, secondCard) => {
// ^^^^^^^^^ ^^^^^^^^^^ parameters
console.log(compare(card1, card2));
/ ^^^^^ ^^^^^ insert cards for comparing
只是一个随机抽取两张不同的牌并进行比较的例子。结果可能是负数。如果不需要,您可以返回一个绝对值。
const compare = (firstCard, secondCard) => firstCard.value - secondCard.value;
function buildDeck() {
const suits = ['spades', 'hearts', 'diamonds', 'clubs'];
const ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'];
const deck = [];
for (let r = 0; r < ranks.length; r++) {
for (let s = 0; s < suits.length; s++) {
deck.push({ ranks: ranks[r], suits: suits[s], value: r + 1 });
}
}
return deck;
}
var deck = buildDeck(),
card1 = deck[Math.floor(Math.random() * deck.length)],
card2;
do {
card2 = deck[Math.floor(Math.random() * deck.length)];
} while (card1 === card2)
console.log(card1);
console.log(card2);
console.log(compare(card1, card2)); // <---- here hand over the two cards for comparing
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- entity-framework-6 - 实体框架调用调用另一个 api 的最佳方式
- c# - VS2019: WF: Add Second Form 不起作用,它尝试添加一个类
- html - XSS 验证:仅检查值是否包含 <> 和 %3C %3E 是否安全
- linux - 呼叫文件星号中的多源号码
- vue.js - 如何在 Nuxt 中对仅包含使用 jest 的布局的 Vue SFC 页面进行快照测试
- python - 关于使用多处理模块并发执行进程的问题
- sql - 我需要知道 Azure SQL DB 中是否有类似于“sys.dm_pdw_request_steps”的 DMV
- json - 在 ruby 中自动转换 JSON 编码的数据
- java - Spring Tool Suite 中的错误“生命周期配置未涵盖插件执行:org.apache.maven.plugins
- xml - xslt 在同一级别上对多个 for-each 循环进行排序