从数组中删除特定值

时间:2012-11-27 21:23:56

标签: javascript d3.js

我得到了一个不同学校成绩的阵列。此数据从json文件中收集。在这个数组中,也有0的成绩。这些是未完成课程的学生的成绩。我想删除数组中的所有0,但我不知道如何开始。

数组示例:

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

P.S。我正在使用d3

5 个答案:

答案 0 :(得分: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]);
}

答案 1 :(得分: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;

答案 2 :(得分: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]; 
        } 
    }

成绩=新等级;

答案 3 :(得分: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

答案 4 :(得分:0)

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