我得到了一个具有不同学校成绩的数组。这些数据是从json文件收集的。在这个数组中,也有0级成绩。这些成绩来自没有完成课程的学生。我想删除数组中的所有0,但我不知道如何启动。阵列的从数组中删除特定值
例如:
var grades = [7,6,4,0,4,8,9,6,6,10,0,7,8,6,7]
P.S.我使用D3
我得到了一个具有不同学校成绩的数组。这些数据是从json文件收集的。在这个数组中,也有0级成绩。这些成绩来自没有完成课程的学生。我想删除数组中的所有0,但我不知道如何启动。阵列的从数组中删除特定值
例如:
var grades = [7,6,4,0,4,8,9,6,6,10,0,7,8,6,7]
P.S.我使用D3
您可以尝试Array.filter
:
var nonzero = grades.filter(function(v) {
return v !== 0;
});
由于commenteers正确地指出,.filter
不利用所有的浏览器。您可以使用MDN提供的垫片(见上面的链接),或者你的代码重新写这样的事:
var i=0, len = grades.length, nonzero = [];
for(;i<len;i++) {
grades[i] !== 0 && nonzero.push(grades[i]);
}
应该警告这是javascript 1.6的一部分,可能不会100%支持。 – MushinNoShin
这适用于我。谢谢! – timG
不是最优雅的代码,但它的工作原理。
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];
}
}
等级= newgrades;
尝试.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);
你试过[搜索对谷歌(https://www.google.com/search?oq=remove+zeros+从+阵列+ JavaScript的)? – Xymostech
Ofcourse但我找不到任何东西。另外我是d3的新手。 – timG