gpt4 book ai didi

javascript - 以匿名函数为父函数的彩票号码生成器

转载 作者:行者123 更新时间:2023-11-28 14:24:44 24 4
gpt4 key购买 nike

我有点卡在这里,我编写了一个调用函数两次的程序。在这个程序中,我有一个 for 循环,使随机数达到 34,还有一个 while 循环,使程序像彩票一样打印这些随机数中的 7 个。我已经让它工作了,但想要替换 while 循环或使其更紧凑。

就像我提到的,我创建了一个函数来生成 1 到 34 之间的随机值。该函数位于匿名函数内,连接到 body 元素中的按钮。我知道我不需要使用匿名函数,但我不想删除它,因为它是练习的一部分。我已经让这个程序工作了,它使用该功能打印到段落,一个用于获胜者号码,一个用于用户号码。

   var navnLos = function(){

var arrRightNumbers=rndNumb(7);
var arrYourNumbers=rndNumb(7);
var para=document.getElementById("vinnerRekke");
var para2=document.getElementById("dinRekke");

function rndNumb(x){
var Numb=[];
for(let i=0;i<x;i++){
var rndoNumb=Math.floor(Math.random()*34)+1;
rndoNumb=Number(rndoNumb);

while
(rndoNumb===Numb[0]||
rndoNumb===Numb[1]||
rndoNumb===Numb[2]||
rndoNumb===Numb[3]||
rndoNumb===Numb[4]||
rndoNumb===Numb[5]||
rndoNumb===Numb[6]){
rndoNumb=Math.floor(Math.random()*34)+1;
}
Numb.push(rndoNumb);
}
return Numb;
}
para.innerHTML="Winner numbers: " + arrRightNumbers;
para2.innerHTML="your numbers: " + arrYourNumbers;
}

我已经得到了我想要的结果,但我想尝试使代码更紧凑,而不删除作为父函数的 anon 函数。具体来说,我想重写 while 循环,这样它看起来就不那么困惑了。我还希望获得关于辅助功能的建议,该功能可以比较两个段落与数字,并打印有多少数字是相同的。

最佳答案

一个Set当您想要一个没有重复的集合时,这是一个自然的选择。您可以抽取 7 个数字并将它们放入该组中。如果有重复项,它们将不会出现在集合中,并且集合将小于您的目标大小。

例如:

function navnLos(){

let arrRightNumbers=rndNumb(7);
let arrYourNumbers=rndNumb(7);

function rndNumb(x){
let Numb = new Set(Array.from({length: 7}, () => Math.floor(Math.random()*34)+1));
while (Numb.size < 7){
Numb.add(Math.floor(Math.random()*34)+1);
}
return [...Numb];
}
console.log("Winner numbers: " + arrRightNumbers);
console.log("your numbers: " + arrYourNumbers)
console.log("winning picks:", countSame(arrRightNumbers, arrYourNumbers) )
}

navnLos()

function countSame(arr1, arr2){
return arr1.reduce((sum, item) => sum + arr2.includes(item), 0)
}

关于javascript - 以匿名函数为父函数的彩票号码生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53887282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com