你能从数组中调用一个var,而不是它的值吗

Can you call upon a var, not its value, out of an array?

本文关键字:var 一个 数组 调用      更新时间:2023-09-26

在JS BlackJack应用程序上工作时遇到一些问题。我有玛尔牌组(纸牌阵列),我的脸牌有定义的值。我随机为每个玩家选择卡片,它会添加并显示卡片值,但我希望能够为每个玩家显示一张卡片img。因此,我无法区分人脸卡。

var j = 10;
var q = 10;
var k = 10;
var cards = [2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, j, j, j, j, q, q, q, q, k, k, k, k, a, a, a, a];
function processIt() {
    //player's hand
    var player = document.getElementById("player");
    var card1 = (Math.floor(Math.random() * cards.length));
    var card2 = (Math.floor(Math.random() * cards.length));
    totalPlayer = cards[card1] + cards[card2];
    cardDisplayP = cards[card1] + " " + cards[card2];
    player.innerHTML = cardDisplayP + "<br />" + "Total: " + totalPlayer;

那么,有没有什么方法可以调用var,而不是从数组中调用它的值
即我想要:

show var.cards[46] = k;
cards[46] = 10;

您不应该依赖于数组中的位置,而应该创建构造函数或对象来包含有关卡的数据。这里有一个构造函数的例子:

var Suit = {
    Hearts: 0,
    Diamonds: 1,
    Clubs: 2,
    Spades: 3,
    '0': '♥',
    '1': '♦',
    '2': '♣',
    '3': '♠'
};
if(Object.freeze) {
    Object.freeze(Suit);
}
function Card(suit, value) {
    this.suit = suit;
    this.value = value;
}
Card.faceValue = function(value) {
    if(value > 1 && value < 11) {
        return value.toString();
    } else if(value === 1) {
        return 'A';
    } else {
        return ['J', 'Q', 'K'][value % 10 - 1];
    }
};
Card.prototype.toString = function() {
    return Card.faceValue(this.value) + Suit[this.suit];
};
function Deck() {
    for(var value = 1; value <= 13; value++) {
        for(var suit = 0; suit < 4; suit++) {
            this.push(new Card(suit, value));
        }
    }
}
Deck.prototype = [];
Deck.prototype.constructor = Deck;
Deck.prototype.shuffle = function() {
    this.sort(function() {
        return Math.random() - 0.5;
    });
};
var d = new Deck();
d.shuffle();
document.write(d);

Deck继承自数组,所以您只需使用.pop()即可获得顶级卡。

这是演示。