Javascript 查找数组元素出现的次数
我是JavaScript新手,我已经学习和练习了大约3个月,希望能在这个话题上得到一些帮助。我在做一个扑克牌游戏,我要做的是确定我是有一对、两对、三对、四对还是满座 例如,在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
[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;
}
}
//刷新>/
var flush=false;
对于(i=0,a=1;i<7;i++,a++){
if(种类[i]==种类[a]&&T种类[i]!=未定义){
计数++;
如果(a>=6&&count>=5){
刷新=真;
计数=0;
}否则如果(a>=6&&count<5){
计数=0;
}
}
}
//直接>/
var直线=假;
convertedcards=convertedcards.sort(函数(a,b){返回a-b});
if(转换卡[2]>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]){
直=真;
}
//皇家齐平,直齐平,齐平,直齐>/
var=false;
如果(直接===true&&flush===true&&convertedcards[6]==14){
这是真的;
警惕(“你有皇家同花顺”);
}
else if(直接===true&&flush==true&&flush==false){
警惕(“你的脸红”);
}else if(直线===true&&flush===false){
警惕(“你是直人”);
}else if(直线===false&&flush===true){
警惕(“你脸红”);
}
//满座>/
if(pairs[0]===pairs[1]&&pairs[1]!=pairs[2]&&pairs.length>=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){
满屋=真;
警惕(“你有满座”);
}
//四个同类>/
else if(pairs[0]===pairs[1]&&pairs[1]===pairs[2]&&pairs.length>0){
警惕(“你有四个同类”);
}
//三个同类>/
else if(pairs[0]===pairs[1]&&flush===false&&stright===false&&pairs.length==2){
警惕(“你有三个同类”);
}
//双对>/
else if(pairs[0]!=pairs[1]&&flush===false&&stright==false&&pairs.length>1){
警惕(“你有一双鞋”);
}
//配对>/
else if(pairs.length==1&&flush==false&&stright==false&&pairs.length==1){
警惕(“你有一双”);
}
警报(成对);
};
while(endgame==false){
如果(相位===1){
选项=数字(提示(“您的手:“+displaycard[0]+”+displaycard[1]+”\n\n“+”1.选中“+”\n“+”2.折叠”);
}否则如果(阶段===2){
选项=数字(提示(“您的手:”+displaycard[0]+“”+displaycard[1]+“\n\n”+displaycard[2]+“”+displaycard[3]+“”+displaycard[4]+“\n\n”
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