查找值数组并对其进行计数

时间:2014-03-06 19:08:34

标签: javascript

我有一个数组,我已经循环进入数组并找到连续值为'100,0或rest'的值。

 var num100=100,num0=0,rest,count100=0,count0=0,countrest=0;
 var array1= [
 /* Reduced data set */
 [ "Manoj", 100, 1, 1, 1 ],
 [ "Jai", 0, 0, 0, 0 ],
 [ "Pradeep", 1, 1, 1, 1 ],
 [ "Reena", 0, 0, 0, 0 ],
 [ "Santos", 100, 1, 1, 1 ],
 [ "Brock", 0, 1, 1, 1]         
 ];    

for(var i=0;i<array1.length;i++) {
   for(var j=1;j<array1[i][j].length;j++) {
     if(array1[i][j]==100){count100++;}
     else if(array1[i][j]==0){count0++;}
     else countrest++; 
   }
}

我想要的是,我想循环到每一行,如果某个特定行的值为零,百或休息,则增量应按如下方式进行。

[ "Jai", 0, 0, 0, 0 ]然后计算count0++,即递增1。

如果     [ "Jai", 0, 1, 0, 1 ]然后计算countrest++,即递增1或

否则     [ "Jai", 100, 100, 100, 100 ]然后计算count100++,即递增1

那么,如何完成这项工作。它应该只看到一行只有100个值,如果只有一行是100然后只增加...

3 个答案:

答案 0 :(得分:1)

这应该可以解决问题。对于要测试的每个subArray,将一些变量设置为true。如果事实证明其中一个项目不是0或不是100,则附带的变量设置为false。结果随后被捕获并解释。

var count0 = 0; var count100 = 0; var countrest = 0;
for(var a = 0 ; a < array1.length ; a++){
    var zero = true; var hundred = true;
    for(var b = 1 ; b < array1[a].length ; b++){
        if(array1[a][b] != 0){zero = false;}
        else if(array1[a][b] != 100){hundred = false;}
    }
    if(zero == true){count0++;}
    else if(hundred == true){count100++;}
    else{countrest++;}
}

答案 1 :(得分:0)

如果数组结构总是相同

for(var i=0;i<array1.length;i++){
    if(array1[i][1] == array1[i][2] == array1[i][3] == array1[i][4]){
        if(array1[i][1]==100){count100++;}
        else if(array1[i][1]==0){count0++;}
    }else{
        countrest++; 
    }
}

答案 2 :(得分:0)

for(key in array1){
    if(array1[key].indexOf(100)!=-1){
        count100++;
    }
    else if(array1[key].indexOf(1)!=1){
        countrest++;
    }
    else{
        count0++;
    }
}