学校の成績が異なる配列を入手しました。このデータはjsonファイルから収集されます。この配列には、0の成績もあります。これらは、コースを完了しなかった学生の成績です。配列内のすべての0を削除したいのですが、どのように開始すればよいかわかりません。
配列の例:
var grades = [7,6,4,0,4,8,9,6,6,10,0,7,8,6,7]
ps私はd3を使用しています
学校の成績が異なる配列を入手しました。このデータはjsonファイルから収集されます。この配列には、0の成績もあります。これらは、コースを完了しなかった学生の成績です。配列内のすべての0を削除したいのですが、どのように開始すればよいかわかりません。
配列の例:
var grades = [7,6,4,0,4,8,9,6,6,10,0,7,8,6,7]
ps私はd3を使用しています
あなたは試すことができます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]);
}
最もエレガントなコードではありませんが、機能します。
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;
原始的ですが、それでも機能します:
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];
}
}
グレード=新グレード;
.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);
for(var i=0; i<=grades.length; i++){
if(grades[i]==0){
grades.splice(i,1);
i--;
}
}