所以我有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>
答案 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。但是,如果有更好/更简单的方法,我仍然会感兴趣。