Javascript 我如何将重复的数字排列在一起(最好是在一个数组中),并根据它是哪个数字将它们分开?
我正在做一个游戏,我想模拟扑克风格的手。手现在是一个由5个值组成的数组。这些值是随机生成的。例如,我的手可能是[1,1,2,4,4],或者我的手可能是[1,2,2,2,6] 我希望能够在hand数组中获取重复的数字,并根据有多少重复项以及有多少组重复项返回一个值。在第一个示例中,1,1是第一组。4,4是第二组。因此,有2组2。在第二个示例中,2、2、2是一组3 从那里,我可以创建一组简单的返回语句。因此,第一个示例将返回“两对”。第二个示例将返回“一类三个” 我试过各种条件下的forEach循环 比如说,Javascript 我如何将重复的数字排列在一起(最好是在一个数组中),并根据它是哪个数字将它们分开?,javascript,arrays,Javascript,Arrays,我正在做一个游戏,我想模拟扑克风格的手。手现在是一个由5个值组成的数组。这些值是随机生成的。例如,我的手可能是[1,1,2,4,4],或者我的手可能是[1,2,2,2,6] 我希望能够在hand数组中获取重复的数字,并根据有多少重复项以及有多少组重复项返回一个值。在第一个示例中,1,1是第一组。4,4是第二组。因此,有2组2。在第二个示例中,2、2、2是一组3 从那里,我可以创建一组简单的返回语句。因此,第一个示例将返回“两对”。第二个示例将返回“一类三个” 我试过各种条件下的forEach循环
handCombo() {
let group1 = [], group2 = [];
this.hand.forEach((card, index) => {
// 1. If the index is 0, push the value to the group1
if (index === 0) {
group1.push(card.value);
}
else if (index > 0 && group1[index - 1] === card) {
group1.push(card.value);
}
else if (index > 0 && group1[index - 1] === card) {
group1.push(card.value);
}
});
当hand=[1,2,2,6]时,将生成一个数组group1=[1]。在这种情况下,我想要的是group1=[2,2,2]。此代码表示重复的数量
let arr = [1, 2, 2, 2, 6];
let groups = {};
for(let num of arr) {
let numStr = num.toString();
if (!groups[numStr]) groups[numStr] = 0;
groups[numStr]++;
}
console.log(groups);
for(let no in groups) {
console.log("no", no, "have ", groups[no]);
}
如果您想要的是组中的数组。使用此代码
let arr = [1, 2, 2, 2, 6];
let groups = {};
for (let num of arr) {
let numStr = num.toString();
if (!groups[numStr]) groups[numStr] = [];
groups[numStr].push(num);
}
console.log(groups);
for (let no in groups) {
console.log("no", no, "have ", groups[no]);
}
此代码将回答您的问题。此代码表示重复的数量
let arr = [1, 2, 2, 2, 6];
let groups = {};
for(let num of arr) {
let numStr = num.toString();
if (!groups[numStr]) groups[numStr] = 0;
groups[numStr]++;
}
console.log(groups);
for(let no in groups) {
console.log("no", no, "have ", groups[no]);
}
如果您想要的是组中的数组。使用此代码
let arr = [1, 2, 2, 2, 6];
let groups = {};
for (let num of arr) {
let numStr = num.toString();
if (!groups[numStr]) groups[numStr] = [];
groups[numStr].push(num);
}
console.log(groups);
for (let no in groups) {
console.log("no", no, "have ", groups[no]);
}
您可以计算相同的值并返回自定义结果
功能x(手动){
变量计数={},
成对=0,
三=0,
s='';
forEach(v=>count[v]=(count[v]| | 0)+1);
Object.values(count.forEach)(c=>{
如果(c==3)三个++;
如果(c==2)对++;
});
如果(三)s=‘一类三’;
如果(成对===1)s+=(s&&'and')+'1对';
如果(pairs==2)s='Two pairs';
返回s;
}
log([[1,1,2,4,4],[1,2,2,6],[1,1,2,2,2],[1,2,3,4,5].map(x));//“两对”“一种三对”。
您可以计算相同的值并返回自定义结果
功能x(手动){
变量计数={},
成对=0,
三=0,
s='';
forEach(v=>count[v]=(count[v]| | 0)+1);
Object.values(count.forEach)(c=>{
如果(c==3)三个++;
如果(c==2)对++;
});
如果(三)s=‘一类三’;
如果(成对===1)s+=(s&&'and')+'1对';
如果(pairs==2)s='Two pairs';
返回s;
}
log([[1,1,2,4,4],[1,2,2,6],[1,1,2,2,2],[1,2,3,4,5].map(x));//“两对”“一种三对”。
如果与给定数据不同,请添加您的尝试和想要的结果。如果与给定数据不同,请添加您的尝试和想要的结果。您能否解释此条件(s&&'and')
的工作原理?如果s
类似于非空字符串,则需要第二个”和“
。如果s
是空字符串,则添加空字符串。您能否解释此条件(s&&'and')
如何工作?如果s
类似于非空字符串,则需要第二个”和“
。如果s
是空字符串,则添加空字符串。