Javascript 试图为循环生成一个随机数,但没有';我好像不工作。为什么会这样?
所以我试着做一个循环,但我需要一个随机数来让它真正起作用Javascript 试图为循环生成一个随机数,但没有';我好像不工作。为什么会这样?,javascript,Javascript,所以我试着做一个循环,但我需要一个随机数来让它真正起作用 var j=0; while(j < patrons.length){ var books = patrons[j].booksOut; var fine = patrons[j].fine; var randomnumber = Math.floor(Math.random() * (20 - 5 + 1)) + 1; //the random number for(var i=randomnumber;i<
var j=0;
while(j < patrons.length){
var books = patrons[j].booksOut;
var fine = patrons[j].fine;
var randomnumber = Math.floor(Math.random() * (20 - 5 + 1)) + 1; //the random number
for(var i=randomnumber;i<books.length;i++){ //me trying to replace i with the random number
if(books[i].isOverdue()){
fine = fine + 5.00;
}
}
patrons[j].fine = fine;
j++;
}
var j=0;
而(j<用户长度){
var books=用户[j]。booksOut;
var fine=用户[j]。罚款;
var randomnumber=Math.floor(Math.random()*(20-5+1))+1;//随机数
对于(var i=randomnumber;i没有用户样本值的情况,我能提供的最好方法是使用books.length
作为您的最大值。您为什么还要随机选择它们?您是否正在尝试解决更广泛的问题
const isOverdue = () => true;
const patrons = [
{ booksOut: [{ isOverdue }], fine: 1.0 },
{ booksOut: [{ isOverdue }], fine: 2.0 },
{ booksOut: [{ isOverdue }], fine: 3.0 },
];
let j = 0;
while(j < patrons.length) {
const books = patrons[j].booksOut;
let fine = patrons[j].fine;
const randomnumber = Math.floor(Math.random() * books.length);
for(let i = randomnumber; i < books.length; i++) {
if(books[i].isOverdue()) {
fine += 5.00;
}
}
patrons[j].fine = fine;
j += 1;
}
console.log(JSON.stringify(patrons, null, 2));
类似上面的内容将使isOverdue()
随机回答是或否。在您提供的示例中,您使用new Date()
设置每本书的签出日期,将其设置为执行时间
因此,当您调用isOverdue()
时,它总是检查今天减去现在是否等于14天,这是永远不会的,所以isOverdue()
将始终返回false。随机数不考虑书籍的数量。如果生成的数字大于或等于书籍,会发生什么情况。长度
?嗯,随机数将从1到17(为什么是这个范围?)…books数组中有多少项?您得到的错误是什么?尝试记录您生成的随机数,并检查它是否大于books.length
@DanielBernsons-可能没有错误-如果randomname>=books.length
,则for循环永远不会出现runs@JaromandaX同意,就是这样最符合逻辑,但也可能是isOverdue函数中的错误。可能这是一个典型的XY问题。我正在尝试生成一个随机数,以便触发过期函数,并使用该随机数使用户可以获得罚款。可能需要将随机数放入Book.prototype.isOverdue()
这样它就可以随机决定什么时候过期。
const isOverdue = () => true;
const patrons = [
{ booksOut: [{ isOverdue }], fine: 1.0 },
{ booksOut: [{ isOverdue }], fine: 2.0 },
{ booksOut: [{ isOverdue }], fine: 3.0 },
];
let j = 0;
while(j < patrons.length) {
const books = patrons[j].booksOut;
let fine = patrons[j].fine;
const randomnumber = Math.floor(Math.random() * books.length);
for(let i = randomnumber; i < books.length; i++) {
if(books[i].isOverdue()) {
fine += 5.00;
}
}
patrons[j].fine = fine;
j += 1;
}
console.log(JSON.stringify(patrons, null, 2));
Book.prototype.isOverdue = function() {
return [true, false][Math.floor(Math.random() * 2)]
}