2014-02-07 80 views
0

所以我有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,如果按照上面的例子)。

回答

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] 
+0

我可能更喜歡這個解決方案,那麼我的。我甚至沒有想到檢查是否可以被3整除。謝謝你的答案。 –

0

嗯,我很笨,所有我需要添加的總數= 0在陣列的底部。但是如果有更好/更簡單的方法來做這件事,我仍然會感興趣。

相關問題