计算随机数组中的数字

时间:2016-01-06 12:58:13

标签: javascript

因此,我试图找出在随机数组中生成从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));

第二个功能没有执行,任何想法为什么?

谢谢!

2 个答案:

答案 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访问。