2013-09-01 38 views
1

我具有大小为50的数组,其保持1和49之间的随机整数计数的时间在阵列中出现数量的javascript

我想可以算10之间的数的倍量在阵列内发生19次。

<script type = "text/javascript"> 
    var arr = []; 

    function getRandom(num){ 
     return Math.round(Math.random() * num)+1; 
    } 

    var counter = 0; 

    for (var i = 0; i < 50; i++) { 
     arr.push(getRandom(49)); 
     counter++; 
    } 
+0

因此,在增加计数器之前检查数字是否在10和19之间。有什么问题? – Barmar

回答

1
var count=0; 
for (var i=0;i<50;i++{ 
    if(arr[i]<19 && arr[i]>10){ 
    count++; 
    } 
} 

也就是说,如果你的意思是10和19不计算在内,如果你想计算10和19也,然后更改限制为20,9

+0

或将比较更改为'<=' and '> ='。 – Barmar

0

尝试使用Arry.filter方法:

var nBetween10and19 = [yourArraY] 
         .filter(function(b){return b>10 && b<19;}).length; 

See MDNArray.filter和信息对旧版浏览器垫片

0

制作一个函数总是一个好主意,因为您可以稍后使用不同的参数重用它。

我写了一个函数,它接受最小值和最大值,并计数达到极限值的出现次数。

如果您不想指定它们,您可以将最小或最大值传递给null。

function countRange(list, min, max) { 
    var c = 0; 
    for (var i = 0, l = list.length, item; i < l; i++) { 
     item = list[i]; 
     if ((min == null || item >= min) && (max == null || item <= max)) { 
      c++; 
     } 
    } 
    return c; 
} 

countRange(arr, 10, 19); // count x >= 10 and x <= 19 
countRange(arr, 10, null); // count x >= 10 
countRange(arr, null, 30); // count x <= 30