2012-11-27 6 views
0

다른 학교 성적으로 배열이 있습니다. 이 데이터는 json 파일에서 수집됩니다. 이 배열에는 0 점의 성적도 있습니다.이 과정을 수료하지 않은 학생의 성적입니다. 배열에서 0을 모두 제거하려고하지만 시작하는 방법을 모릅니다. 어레이배열에서 특정 값을 제거하십시오.

예 :

var grades = [7,6,4,0,4,8,9,6,6,10,0,7,8,6,7] 

추신 나는 당신이 Array.filter을 시도 할 수 D3

+0

는 ([구글에서 검색] 해봤 https://www.google.com/search?oq=remove+zeros+ + array + javascript에서)? – Xymostech

+0

Ofcourse하지만 아무것도 찾을 수 없습니다. 또한 저는 d3에 처음 왔습니다. – timG

답변

5

을 사용하고 있습니다 :

var nonzero = grades.filter(function(v) { 
    return v !== 0; 
}); 

commenteers가 제대로 언급 한 바와 같이, .filter 모든 브라우저에서 소용이 없습니다. 당신은 MDN에서 사용할 수있는 심 (shim)을 사용할 수 있습니다 (위의 링크를 참조), 또는 이런 식으로 코드를 다시 쓰기 : 코드의

var i=0, len = grades.length, nonzero = []; 
for(;i<len;i++) { 
    grades[i] !== 0 && nonzero.push(grades[i]); 
} 
+2

이것은 자바 스크립트 1.6의 일부이며 100 % 지원되지 않을 수도 있음을 경고해야합니다. – MushinNoShin

+0

이 작품은 나를 위해. 고맙습니다! – timG

1

아니 가장 우아한 조각 만 작동합니다.

var grades = [7,6,4,0,4,8,9,6,6,10,0,7,8,6,7], 
     newGrades = [], 
     grade; 

    while (grades.length) { 
    grade = grades.pop(); 

    if (grade != 0) 
     newGrades.push(grade); 
    } 

    grades = newGrades; 
0

원시하지만 여전히 작동합니다

var grades = [7,6,4,0,4,8,9,6,6,10,0,7,8,6,7]; 
    var j=0; 
    var newgrades=[]; 
    for (var i=0; i < grades.length; i++) { 
     if (grades[i]) { 
     newgrades[j++] = grades[i]; 
     } 
    } 

성적 =의 newgrades는;

0

시도 .splice() 방법

var grades = [7, 6, 4, 0, 4, 8, 9, 6, 6, 10, 0, 7, 8, 6, 7]; 

while (true) { 
    var index = grades.indexOf(0); 
    console.log(index); 
    if (index > 0) { 
     grades.splice(index, 1); 
    } 
    else { 
     break; 
    } 
} 
console.log(grades); 
​ 

Check Fiddle

0
for(var i=0; i<=grades.length; i++){ 
    if(grades[i]==0){ 
     grades.splice(i,1); 
     i--; 
    } 
} 
+0

'==='- 0을 체크하는 것을 잊지 마라. 그렇지 않으면 어떤 거짓 값도 제거 될 것이다. – David

+0

이것은 일련의 숫자이므로 잘못된 값을 제거하는 것이 좋습니다. 어느 쪽이든, 나는'==='의 과도한 사용을지지하지 않으며 질문의 매개 변수가 주어질 필요는 없습니다. – joequincy

+0

아마도, 그렇지 않을 수도 있습니다. "배열의 모든 0을 제거하십시오"는 내게는 꽤 명확합니다 ... 당신이 할 수있는 일은 단지!! 등급 [i]' – David

관련 문제