javascript - 如何比较数组中的元素 (javascript)

标签 javascript arrays compare

抱歉,如果这听起来很基本,但在编码方面我完全是新手(不过我正在尽力变得更好!)

我正在使用 javascript 制作一个简单的更高或更低的纸牌游戏,用户猜测下一张纸牌是否会比当前显示的纸牌更高或更低。

我目前有一个包含 52 张卡片的数组,并且我正在使用 Math.random 从该数组中随机生成一张卡片。

我想要比较两张卡的值(value),但我不知道如何去做。我有一种感觉,它可能涉及 IndexOf,但我不确定。

感谢一百万,如果这偏离主题或重复,我很抱歉!

如果有帮助的话,这是我的数组。

function randomCard()
{
var cardArray = ["Club0.jpg","Club1.jpg","Club3.jpg","Club3.jpg","Club4.jpg","Club5.jpg","Club6.jpg","Club7.jpg","Club8.jpg","Club9.jpg","Club10.jpg","Club11.jpg","Club12.jpg","Diamond0.jpg","Diamond1.jpg","Diamond2.jpg","Diamond3.jpg","Diamond4.jpg","Diamond5.jpg","Diamond6.jpg","Diamond7.jpg","Diamond8.jpg","Diamond9.jpg","Diamond10.jpg","Diamond11.jpg","Diamond12.jpg","Heart0.jpg","Heart1.jpg","Heart2.jpg","Heart3.jpg","Heart4.jpg","Heart5.jpg","Heart6.jpg","Heart7.jpg","Heart8.jpg","Heart9.jpg","Heart10.jpg","Heart11.jpg","Heart12.jpg","Spade0.jpg","Spade1.jpg","Spade2.jpg","Spade3.jpg","Spade4.jpg","Spade5.jpg","Spade6.jpg","Spade7.jpg","Spade8.jpg","Spade9.jpg","Spade10.jpg","Spade11.jpg","Spade12.jpg"];

var pickCard = cardArray[Math.floor(Math.random() * cardArray.length)];
document.getElementById("card").src = pickCard;
}

最佳答案

我认为这里的问题不是你不了解数组和循环,而是如何在开始之前正确地构建你的问题。目前您拥有以下内容:

var cardArray = ["Club0.jpg","Club1.jpg","Club3.jpg"...];

这会让你的生活变得更加困难,因为对这些数组元素进行数值比较(虽然并非不可能)会涉及到你可能还没有准备好的正则表达式测试。

如果你说“我有 4 套牌,牌的点数为 1 - 13(11 是 J,13 是 K,A 是低),那么你可以开始更好地理解问题范围.

让我们从创建牌组开始 - 四套套装,每套 14 张牌。

var deck = {
  heart: [1,2,3,4,5,6,7,8,9,10,11,12,13],
  club: [1,2,3,4,5,6,7,8,9,10,11,12,13],
  spade: [1,2,3,4,5,6,7,8,9,10,11,12,13],
  diamond: [1,2,3,4,5,6,7,8,9,10,11,12,13]
};

我们需要将花色的名称保存在一个单独的数组中,以便我们可以访问该对象。

var suits = ['heart','club','spade','diamond'];

接下来,备忘录很重要。由于我们不想每次抽牌时都拿一张相同的牌,因此我们需要记下已经拿过哪些牌; memo 是我们引用的所选卡片的存储。

var memo = [];

现在介绍函数drawRandomCard。它从我们的花色数组中随机抽取一个花色,并从所选花色的数组中获取一个数字。如果卡片在 memo 中,我们会再次绘制,否则我们会将其添加到 memo 中并返回卡片。但是,因为我们仍然想对值进行比较,所以我们将返回一个数组,第一个元素是花色,第二个元素是值。

function drawRandomCard() {
  var suit = suits[Math.floor(Math.random() * suits.length)];
  var number = deck[suit][Math.floor(Math.random() * 13)];
  if (memo[suit + number]) drawRandomCard();
  memo.push(suit + number)
  return [suit, number];
}

例如:

var card1 = drawRandomCard();
var card2 = drawRandomCard();

要测试这些值,请将数组的第二个值相互比较:

console.log(card1[1] > card2[1]); // true or false

然后,如果您愿意,您可以使用 join 将这些变量的值与需要加载的任何图像进行匹配,以将卡片数组元素合并在一起。

var img = new Image();
img.src = card1.join('') + '.jpg'; // eg. diamond4.jpg

或者:

document.getElementById("card").src = card1.join('') + '.jpg';

Fiddle

关于javascript - 如何比较数组中的元素 (javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20020551/

相关文章:

Excel - 如果两列中都存在值,则返回 "true"

c# - Linq 返回字符串数组

javascript - 是否可以在除 IE 之外的浏览器中准确找到 KeyPress 事件的位置?

javascript - JS Modal 不在输入字段中显示变量 - 服务器配置要求?

javascript - 对于 HTML5 视频页面的 mp4 视频,播放/暂停等视频控件未在 android chrome 上显示

ios - 在 Swift 中使用高阶函数更新数组值

c - 在 C 中动态分配结构数组

javascript - 推送元素时检查数组元素

c++ - 为泛型类传递比较函数

javascript - 如何在 botium 中指定日期格式?