因此,我试图找出在随机数组中生成从0到10的每个数字的数量。 我创建了一个随机数组列表
i=0;
var ranList=[];
while (i<20){
i++;
ranList.push(Math.floor(10*Math.random()));
}
//count each number
document.write(ranList.sort().join("<br>"));
/*Then I made a function to count /elements from this array
*/
function ctnumber(array,elem){
var ct=0;
var j =0;
while(j<array.length)
{
j++;
if(array[j]==elem){
ct+=1;}
}
}
return ct;
}
alert(ctnumber(ranList,5));
第二个功能没有执行,任何想法为什么?
谢谢!
答案 0 :(得分:1)
首先,您应该避免为您的变量使用名称数组: http://www.w3schools.com/js/js_reserved.asp
你的括号也错了。将您的功能更改为此功能,它应该可以工作:
function ctnumber(arr,elem){
var ct=0;
var j =0;
while(j<arr.length)
{
j++;
if(arr[j]==elem){
ct+=1;}
}
return ct;
}
答案 1 :(得分:1)
Pardeep在其评论中指出,您的代码存在的问题是,在您的第二个}
循环中ct+=1;
后,您还需要额外while
。
正确的代码是:Fiddle
i = 0;
var ranList = [];
while (i < 20) {
i++;
ranList.push(Math.floor(10 * Math.random()));
}
//count each number
document.write(ranList.sort().join("<br>"));
function ctnumber(array, elem) {
var ct = 0;
var j = 0;
while (j < array.length) {
j++;
if (array[j] == elem) {
ct += 1; // NOTE NO } HERE NOW
}
}
return ct;
}
alert(ctnumber(ranList, 5));
我还建议稍微清理一下代码:
var i = 0;
var ranList = [];
while (i < 20) {
i++;
ranList.push(Math.floor(10 * Math.random());
}
function countNumbers(list, elem) {
var count = 0;
// For loops are generally more readable for looping through existing lists
for (var i = 0; i < list.length; i++) {
if (list[i] == elem) {
count++;
}
}
return count;
}
alert(countNumber(ranList, 5));
请注意,console.log()
是一个更好的调试工具,可以通过Firefox和Chrome / IE中的F12
访问。