Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找数组元素出现的次数_Javascript_Arrays - Fatal编程技术网

Javascript 查找数组元素出现的次数

Javascript 查找数组元素出现的次数,javascript,arrays,Javascript,Arrays,我是JavaScript新手,我已经学习和练习了大约3个月,希望能在这个话题上得到一些帮助。我在做一个扑克牌游戏,我要做的是确定我是有一对、两对、三对、四对还是满座 例如,在[1,2,3,4,4,4,3]中,1出现一次,4出现三次,依此类推 我怎么可能让我的计算机告诉我一个数组元素出现了多少次 解决了,这是最终产品 <script type="text/javascript"> var deck = []; var cards = []; var co

我是JavaScript新手,我已经学习和练习了大约3个月,希望能在这个话题上得到一些帮助。我在做一个扑克牌游戏,我要做的是确定我是有一对、两对、三对、四对还是满座

例如,在
[1,2,3,4,4,4,3]
中,1出现一次,4出现三次,依此类推

我怎么可能让我的计算机告诉我一个数组元素出现了多少次

解决了,这是最终产品

    <script type="text/javascript">
    var deck = [];
    var cards = [];
    var convertedcards = [];
    var kinds = [];
    var phase = 1;
    var displaycard = [];
    var options = 0;
    var endgame = false;

    // Fill Deck //
    for(i = 0; i < 52; i++){
        deck[deck.length] = i;          
    }

    // Distribute Cards //
    for(i = 0; i < 7; i++){
        cards[cards.length] = Number(Math.floor(Math.random() * 52));
        if(deck.indexOf(cards[cards.length - 1]) === -1){
            cards.splice(cards.length - 1, cards.length);
            i = i - 1;
        }else{
            deck[cards[cards.length - 1]] = "|";
        }
    }

    // Convert Cards //
    for(i = 0; i < 7; i++){
        convertedcards[i] = (cards[i] % 13) + 1;
    }


    // Cards Kind //
    for(i = 0; i < 7; i++){
        if(cards[i] < 13){
            kinds[kinds.length] = "H";
        }else if(cards[i] < 27 && cards[i] > 12){
            kinds[kinds.length] = "C";
        }else if(cards[i] < 40 && cards[i] > 26){
            kinds[kinds.length] = "D";
        }else{
            kinds[kinds.length] = "S";
        }
    }

    // Card Display //
    for(i = 0; i < 7; i++){
        displaycard[i] = convertedcards[i] + kinds[i];
    }

    // Hand Strenght //
    var handstrenght = function(){
        var usedcards = [];
        var count = 0;
        var pairs = [];
        for(i = 0, a = 1; i < 7; a++){
            if(convertedcards[i] === convertedcards[a] && a < 7 && usedcards[i] != "|"){
                pairs[pairs.length] = convertedcards[i];
                usedcards[a] = "|";
            }else if(a > 6){
                i = i + 1;
                a = i;
            }
        }

        // Flush >.< //
        var flush = false;
        for(i = 0, a = 1; i < 7; i++, a++){
            if(kinds[i] === kinds[a] && kinds[i] != undefined){
                count++;
                if(a >= 6 && count >= 5){
                    flush = true;
                    count = 0;
                }else if(a >= 6 && count < 5){
                    count = 0;
                }
            }
        }
        // Straight >.< //
        var straight = false;
        convertedcards = convertedcards.sort(function(a,b){return a-b});
        if(convertedcards[2] > 10 && convertedcards[3] > 10 && convertedcards[4] > 10){
            convertedcards[0] = 14;
            convertedcards = convertedcards.sort(function(a,b){return a-b});
        }
        alert(convertedcards);
        if(convertedcards[0] + 1 === convertedcards[1] && convertedcards[1] + 1 === convertedcards[2] && convertedcards[2] + 1 === convertedcards[3] && convertedcards[3] + 1 === convertedcards[4]){
            straight = true;
        }else if(convertedcards[1] + 1 === convertedcards[2] && convertedcards[2] + 1 === convertedcards[3] && convertedcards[3] + 1 === convertedcards[4] && convertedcards[4] + 1 === convertedcards[5]){
            straight = true;
        }else if(convertedcards[2] + 1 === convertedcards[3] && convertedcards[3] + 1 === convertedcards[4] && convertedcards[4] + 1 === convertedcards[5] && convertedcards[5] + 1 === convertedcards[6]){
            straight = true;
        }
        // Royal Flush, Straight Flush, Flush, Straight >.< //
        var royalflush = false;
        if(straight === true && flush === true && convertedcards[6] === 14){
            royalflush = true;
            alert("You have a Royal Flush");
        }
        else if(straight === true && flush === true && royalflush === false){
            alert("You have a straight flush");
        }else if(straight === true && flush === false){
            alert("You have a straight");
        }else if(straight === false && flush === true){
            alert("You have a flush");
        }
        // Full House >.< //
        if(pairs[0] === pairs[1] && pairs[1] != pairs[2] && pairs.length >= 3){
            fullhouse = true;
            alert("You have a fullhouse");
        }else if(pairs[0] != pairs[1] && pairs[1] === pairs[2] && pairs.length >= 3){
            fullhouse = true;
            alert("You have a fullhouse");
        }else if(pairs[0] != pairs[1] && pairs[1] != pairs[2] && pairs[2] === pairs[3] && pairs.length >= 3){
            fullhouse = true;
            alert("You have a fullhouse");
        }
        // Four of a kind >.< //
        else if(pairs[0] === pairs[1] && pairs[1] === pairs[2] && pairs.length > 0){
            alert("You have four of a kind");
        }
        // Three of a kind >.< //
        else if(pairs[0] === pairs[1] && flush === false && straight === false && pairs.length === 2){
            alert("You have three of a kind");
        }
        // Double Pair >.< //
        else if(pairs[0] != pairs[1] && flush === false && straight === false && pairs.length > 1){
            alert("You have a double pair");
        }
        // Pair >.< //
        else if(pairs.length === 1 && flush === false && straight === false && pairs.length === 1 ){
            alert("You have a pair");
        }
        alert(pairs);
    };
    while(endgame === false){
        if(phase === 1){
            options = Number(prompt("Your hand: " + displaycard[0] + " " + displaycard[1] + "\n\n" + "1. Check" + "\n" + "2. Fold"));
        }else if(phase === 2){
            options = Number(prompt("Your hand: " + displaycard[0] + " " + displaycard[1] + "\n\n" + displaycard[2] + " " + displaycard[3] + " " + displaycard[4] + "\n\n" + "1. Check" + "\n" + "2. Fold"));
        }else if(phase === 3){
            options = Number(prompt("Your hand: " + displaycard[0] + " " + displaycard[1] + "\n\n" + displaycard[2] + " " + displaycard[3] + " " + displaycard[4] + " " + displaycard[5] + "\n\n" + "1. Check" + "\n" + "2. Fold"));
        }else if(phase === 4){
            options = Number(prompt("Your hand: " + displaycard[0] + " " + displaycard[1] + "\n\n" + displaycard[2] + " " + displaycard[3] + " " + displaycard[4] + " " + displaycard[5] + " " + displaycard[6] + "\n\n" + "1. Check" + "\n" + "2. Fold"));
        }
        switch(options){
            case 1:
                    if(phase === 5){
                        handstrenght();
                        endgame = true;
                    }else{
                        phase++;
                    }
                    break;
            case 2:
                    endgame = true;
                    break;
            default:
                    endgame = true;
                    break;
        }
    }


</script>

var deck=[];
var卡=[];
var转换卡=[];
var种类=[];
无功相位=1;
var displaycard=[];
var选项=0;
var endgame=假;
//填充甲板//
对于(i=0;i<52;i++){
甲板[甲板长度]=i;
}
//分发卡片//
对于(i=0;i<7;i++){
卡片[cards.length]=数字(Math.floor(Math.random()*52));
if(卡片组索引of(卡片[cards.length-1])=-1){
卡.拼接(卡.长度-1,卡.长度);
i=i-1;
}否则{
牌组[cards[cards.length-1]=“|”;
}
}
//转换卡片//
对于(i=0;i<7;i++){
转换卡[i]=(卡[i]%13)+1;
}
//卡片类//
对于(i=0;i<7;i++){
如果(卡[i]<13){
种类[种类.长度]=“H”;
}else if(卡片[i]<27和卡片[i]>12){
种类[种类.长度]=“C”;
}else if(卡片[i]<40和卡片[i]>26){
种类[种类.长度]=“D”;
}否则{
种类[种类.长度]=“S”;
}
}
//卡片显示//
对于(i=0;i<7;i++){
显示卡[i]=转换卡[i]+种类[i];
}
//体力//
var handstrent=函数(){
var usedcards=[];
var计数=0;
var对=[];
对于(i=0,a=1;i<7;a++){
if(转换卡[i]==转换卡[a]&&a<7&&usedcards[i]!=“|”){
pairs[pairs.length]=转换卡[i];
使用卡片[a]=“|”;
}如果(a>6),则为else{
i=i+1;
a=i;
}
}
//刷新>=6&&count>=5){
刷新=真;
计数=0;
}否则如果(a>=6&&count<5){
计数=0;
}
}
}
//直接>10和转换卡[3]>10和转换卡[4]>10){
转换卡[0]=14;
convertedcards=convertedcards.sort(函数(a,b){返回a-b});
}
警报(转换卡);
如果(转换卡[0]+1===转换卡[1]&转换卡[1]+1===转换卡[2]&转换卡[2]+1===转换卡[3]&转换卡[3]+1==转换卡[4]){
直=真;
}否则如果(转换卡[1]+1===转换卡[2]&&convertedcards[2]+1===转换卡[3]&&convertedcards[3]+1==转换卡[4]&&convertedcards[4]+1==转换卡[5]){
直=真;
}否则如果(转换卡[2]+1===转换卡[3]&&convertedcards[3]+1===转换卡[4]&&convertedcards[4]+1==转换卡[5]&&convertedcards[5]+1==转换卡[6]){
直=真;
}
//皇家齐平,直齐平,齐平,直齐>=3){
满屋=真;
警惕(“你有满座”);
}else if(pairs[0]!=pairs[1]&&pairs[1]==pairs[2]&&pairs.length>=3){
满屋=真;
警惕(“你有满座”);
}else if(pairs[0]!=pairs[1]&&pairs[1]!=pairs[2]&&pairs[2]==pairs[3]&&pairs.length>=3){
满屋=真;
警惕(“你有满座”);
}
//四个同类>0){
警惕(“你有四个同类”);
}
//三个同类>1){
警惕(“你有一双鞋”);
}
//配对>var list = [2, 1, 4, 2, 1, 1, 4, 5];  

function countInArray(array, what) {
    var count = 0;
    for (var i = 0; i < array.length; i++) {
        if (array[i] === what) {
            count++;
        }
    }
    return count;
}

countInArray(list, 2); // returns 2
countInArray(list, 1); // returns 3
function countInArray(array, what) {
    return array.filter(item => item == what).length;
}
var a = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4].reduce(function (acc, curr) {
  if (typeof acc[curr] == 'undefined') {
    acc[curr] = 1;
  } else {
    acc[curr] += 1;
  }

  return acc;
}, {});

// a == {2: 5, 4: 1, 5: 3, 9: 1}
function count( list, x ) {

    for ( var l = list.length, c = 0; l--; ) {

        if ( list[ l ] === x ) {

            c++;
        }
    }

    return c;

}
function count( list, x ) {

    for ( var l = list.length, c = 0; l--; list[ l ] === x && c++ );

    return c;

}
var items = [1, 2, 3, 4, 4, 4, 3];
var fours = items.filter(function(it) {return it === 4;});
var result = fours.length;
// Creates a new function that returns true if the parameter passed to it is 
// equal to `x`
function equal_func(x) {
    return function(it) {
        return it === x;
    }
}
//...
var result = items.filter(equal_func(4)).length;
Array.prototype.count = function(lit = false) {
    if ( !lit ) { return this.length}
    else {
        var count = 0;
        for ( var i=0; i < this.length; i++ ) {
            if ( lit == this[i] ){
                count++
            }
        }
        return count;
    }
}
var count = [1,2,3,4,4].count(4);  // Returns 2
var count = [1,2,3,4,4].count();   // Without first parameter returns 5