2014-02-07 3 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]). 그런 다음 각 배열에서 각 개별 번호를 가져 와서 전체에 추가합니다.

현재로서는 첫 번째 3 개가 추가 된 다음 두 번째 루프에서 첫 번째 세 개에 추가 된 두 번째 세 개를 반환합니다. 예를 들어 total = 2, total = 2, total = 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

글쎄, 내가 추가 할 필요가있는 모든 것은 배열 하단에 total = 0이었다. 그러나이 일을 더 잘/더 간단한 방법이 있다면 나는 여전히 관심을 가질 것입니다.

관련 문제