0

私はJavaScriptの初心者であり、生成されたカードがすでに使用されているかどうかをスクリプトに尋ねるより良い方法があるかどうか知りたいです。

現在、私はたくさんのOr演算子を使用していますが、それを行うための冗長性の少ない方法が必要です。誰かが私の質問に答えることができれば、それは長期的には本当に私を助けてくれるでしょう。ありがとう

var cards = ['Ace of heart','Ace of club','Ace of diamond','Ace of spade',
                 'Two of heart','Two of club','Two of diamond','Two of spade',
                 'Three of heart','Three of club','Three of diamond','Three of spade',
                 'Four of heart','Four of club','Four of diamond','Four of spade',
                 'Five of heart','Five of club','Five of diamond','Five of spade'];

    // Distributed Cards //
    var pre_flop = [1];
    var flop = [2];
    var turn = [0];
    var river = [0];

    // Cards value //
    var your_card;
    var indexed_cards = [6];

    var total_card = 0;
    var deck_size = cards.length;       

    function generate_card(){

        // Assign value to first card //
        if(total_card === 0){
            your_card = Math.floor(Math.random() * deck_size);
            indexed_cards [total_card] = your_card;
            total_card++;
        }else{
            your_card = Math.floor(Math.random() * deck_size);
            // Makes sure the cards are different //
            while(1){
                if(your_card === indexed_cards [0] || your_card === indexed_cards [1] || your_card === indexed_cards [2] || your_card === indexed_cards [3] || your_card === indexed_cards [4] || your_card === indexed_cards [5] || your_card === indexed_cards [6]){
                    your_card = Math.floor(Math.random() * deck_size);
                }else {
                    indexed_cards [total_card] = your_card;
                    break;
                }
            }
            total_card++;           
        }
    }
4

2 に答える 2

1

ORの置き換えに関する特定の質問に答えるには:

array.indexOf(..)を使用して、何かが配列内にあるかどうかを調べることができます。

var myarray = [1, 3, 77, 12, 9];

console.log('index of 77 ' + myarray.indexOf(77));    // 2
console.log('index of 4 ' + myarray.indexOf(4))    // -1

indexOfは、アイテムが見つからない場合は-1を返し、それ以外の場合は配列内のアイテムの位置を返します。文字列内の文字の位置または存在を見つけるために、このメソッドが文字列で使用されるのを見たことがあるかもしれません。ここでも同じ原則が当てはまります。

コードに関する他の問題が存在する可能性がありますが、置き換えることができるはずです

if(your_card === indexed_cards [0] || your_card === indexed_cards [1] || your_card === indexed_cards [2] || your_card === indexed_cards [3] || your_card === indexed_cards [4] || your_card === indexed_cards [5] || your_card === indexed_cards [6]){

if (indexed_cards.indexOf(your_card) !== -1) {
于 2012-09-23T15:03:22.800 に答える
0

それだけです。もっときれいに見せたい場合は、jqueryarray.containsまたはindexOfチェックを使用できます。

indexed_cards配列の最大長は6だと思います。

于 2012-09-23T14:57:31.413 に答える