这是我的代码:
var shuffle = function() {
var set = [];
var waiter = [];
var suitset = ["Hearts","Clubs","Diamonds","Spades"];
for (var r = 1;r <= 13;r++) {
for (var s = 0;s < suitset.length;s++) {
card = [];
var cardeval = evalcard(r); //This is an input from another function
card.push(cardeval[0]);
card.push(suitset[s]);
card.push(cardeval[1]);
waiter.push(card);
}
}
while (waiter.length) { //This is what randomizes the deck aka shuffles
set.push(waiter.splice(Math.random() * waiter.length,1));
}
return set;
};
我正在尝试构建一个卡片矩阵(我在这里使用矩阵作为数组的数组)。将有 52 个卡牌数组,每个卡牌数组包含一个卡号、花色和数值。但在我调用该函数后,card
作为字符串而不是数组返回,即使它是用数组括号 []
定义的。谁能看到我在这里做错了什么吗?
最佳答案
<强> Live Demo
function evalcard() { return [1,2]}
var shuffle = function() {
var set = [];
var waiter = [];
var suitset = ["Hearts","Clubs","Diamonds","Spades"];
for (var r = 1;r <= 13;r++) {
for (var s = 0;s < suitset.length;s++) {
var card = {},
cardeval = evalcard(r);
card.num = cardeval[0];
card.suite = suitset[s];
card.val = cardeval[1];
waiter.push(card);
}
}
while (waiter.length) { //This is what randomizes the deck aka shuffles
var randomNum = Math.floor(Math.random() * (waiter.length-1));
set.push(waiter[randomNum]);
waiter.splice(randomNum ,1)
}
return set;
};
var test = shuffle();
console.log(test);
alert(test[0].suite);
将卡片制作成对象,然后将它们传递到数组中,只是为了更容易访问。
关于javascript - 通过使用循环构建矩阵的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7030195/