我对这个脚本有问题,出了点问题。 Rnumer保持未定义。此脚本应返回并写入随机数列表中的所有不均匀数字。谁能告诉我我做错了什么。提前致谢
var Rnumber = new Array();
for (i = 0; i<= 100;i++)
{
Rnumber[i] = Math.ceil(Math.random()*101);
// document.write(Rnumber[i] + "<br/>");
}
function unevenAndDivisible(Rnumber)
{
var remainder = new Array();
for (i = 0; i<= 100; i++)
{
remainder = parseInt(Rnumber[i])%2;
}
return remainder;
}
document.write(unevenAndDivisible());
已更改为
var Rnumber = new Array();
for (i = 0; i<= 100;i++)
{
Rnumber[i] = Math.ceil(Math.random()*101);
// document.write(Rnumber[i] + "<br/>");
}
function unevenAndDivisible(Rnumber)
{
var remainder = new Array();
for (i = 0; i<= 100; i++)
{
remainder[i] = Rnumber[i]%2;
}
return remainder;
}
document.write(unevenAndDivisible(Rnumber));
但现在我得到了结果: 0,1,0,0,1,0,0,0,1,1,0,0,1,0,1,1,1 ....
我只是想在第一次问我错了,从Rnumbers的随机列表中写出不均匀的数字 然后我需要将它除以7并返回。
修改
所有问题都很清楚,感谢所有人。 他们还有一个问题: 在下面的代码中,它仅从剩余部分获取第一个不均匀值,并且我希望它使得下一个if语句不均匀的所有值都检查%7。 如果你为自己运行它,也许你会看到更好的问题
var Rnumber = new Array();
for (i = 0; i<= 100;i++)
{
Rnumber[i] = Math.ceil(Math.random()*101);
}
function unevenAndDivisible()
{
var remainder = [];
var answer = [];
for (i = 0; i<= 100; i++)
{
if (Rnumber[i]%2 !== 0)
{
remainder.push(Rnumber[i]);
for (c = 0; c <= remainder.length;c++)
{
if (remainder[c]%7 == 0)
{
answer.push(remainder[c]);
}
}
}
}
return answer;
}
answer = unevenAndDivisible();
document.write(answer);
问题解决了,谢谢大家
答案 0 :(得分:2)
您无需将Rnumber
传递给该函数,因为它已在范围内可用:
function unevenAndDivisible()
{
var remainder = [];
for (i = 0; i<= 100; i++)
{
if (Rnumber[i]%2 !== 0) {
remainder.push(Rnumber[i]);
}
}
return remainder;
}
remainder = unevenAndDivisible();
console.log(remainder);
已编辑以回复OP提出的问题(在上面的问题的评论中):
...有人可以解释这是什么意思:
var remainder = [];
当然,它是数组文字表示法,它等于:var remainder = new Array();
,它只是更简洁一点,我更喜欢自己保存打字。我从JS Lint获得了这样的印象,每当我在其中使用var x = new Array();
时,通常首选上述版本(因为它另有抱怨),但我不知道为什么。
答案 1 :(得分:1)
将Rnumber传递给函数unevenAndDivisible
或从参数列表中省略它。由于它是一个参数,因此它具有比Rnumber的初始声明更多的局部范围。
答案 2 :(得分:0)
1 - 您没有定义函数参数的Rnumber
值。
2 - 在循环中,你将剩余部分定义为分配的编号值,而不是保存在数组中;尝试:
变化:
remainder = parseInt(Rnumber[i])%2;
到
remainder[i] = parseInt(Rnumber[i])%2;
答案 3 :(得分:0)
你的问题就在这一行
function unevenAndDivisible(Rnumber)
你正在传递Rnumber作为参数,但是当你打电话给unevenAndDivisible()
时
你没有传递它。
因此,对于函数的主体,Rnumber是未定义的(因为你没有通过任何内容)
以下代码段相当于你写的nad可能更好解释
function unevenAndDivisible(xyz)
{
var remainder = new Array();
for (i = 0; i<= 100; i++)
{
remainder = parseInt(xyz[i])%2;
}
return remainder;
}
然后称为
unevenAndDivisible(undefined)
修复它从调用定义中删除参数
即。将其定义为
function unevenAndDivisible()
答案 4 :(得分:0)
var array = [],
i = 100;
while (i--) {
var random = Math.random()*i|0;
if(random % 2)
array.unshift(random);
}
alert(array);