0

学校の成績が異なる配列を入手しました。このデータはjsonファイルから収集されます。この配列には、0の成績もあります。これらは、コースを完了しなかった学生の成績です。配列内のすべての0を削除したいのですが、どのように開始すればよいかわかりません。

配列の例:

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

ps私はd3を使用しています

4

5 に答える 5

5

あなたは試すことができますArray.filter

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

コメント投稿者が正しく指摘しているように、.filterすべてのブラウザで利用できるわけではありません。MDNで利用可能なシム(上記のリンクを参照)を使用するか、コードを次のように書き直すことができます。

var i=0, len = grades.length, nonzero = [];
for(;i<len;i++) {
    grades[i] !== 0 && nonzero.push(grades[i]);
}
于 2012-11-27T21:26:47.517 に答える
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;
于 2012-11-27T21:30:39.650 に答える
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]; 
        } 
    }

グレード=新グレード;

于 2012-11-27T21:31:55.477 に答える
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);
​

フィドルをチェック

于 2012-11-27T21:33:27.500 に答える
0
for(var i=0; i<=grades.length; i++){
    if(grades[i]==0){
        grades.splice(i,1);
        i--;
    }
}
于 2012-11-27T21:34:00.637 に答える