循环遍历数组并添加每个部分的总和

时间:2014-02-07 17:48:12

标签: javascript arrays

所以我有11个复选框,分为4个不同的类别。每个类别有3个复选框可供选择,除了最后一个,有2个。我想检查每个类别中的复选框是否被检查,并找出在该类别中检查了多少个复选框。我可能会想到这个,但到目前为止我把它作为我的JS:

//I initially receive the checkbox values as a string that has 1 for checked and 0 for not checked.

var split_string = checkbox_string.split(",").map(Number);
console.log(split_string);

var sec = [];
var total = 0;
var split_int=[];
var sliced = 0;
for (var i = 0; i <= 3 ; ++i) {
    sec[i] = split_string.splice(0,3);
    console.log(sec[i]);
    for(var j = 0; j < sec[i].length; ++j){
    sliced = sec[i][j];
    total += sliced;
  }
  console.log("total= "+ total);
    window['section' + i] = total;

}

就目前而言,我非常接近,尽管我确信有一种更简单的方法可以做到这一点。我将字符串分成4个数组(例如[1,0,1] [0,0,1] [1,1,1] [1,0])。然后我从每个数组中取出每个单独的数字并将其添加到总数中。

到目前为止它将返回前三个添加,然后它返回第二个三个添加到第二个循环的前三个。所以例如总数= 2第一次,然后总数= 3,第二次,但我希望第二次总计仅基于第二个数组(所以如果遵循上面的例子,它将是1)。 / p>

2 个答案:

答案 0 :(得分:1)

function summer(p,c,i) {
  if( i%3==0 ) p.push(0);
  p[p.length-1] += c;
  return p;
}

var split_string = [1,0,1,0,0,1,1,1,1,1,0];
split_string.reduce(summer,[]); // [2, 1, 3, 1]

答案 1 :(得分:0)

嗯,我很笨,我需要添加的是数组底部的total = 0。但是,如果有更好/更简单的方法,我仍然会感兴趣。