在条件上从数组中删除对象

时间:2016-03-29 16:05:35

标签: javascript arrays if-statement for-loop

我有一个csv文件,我已经通过换行符进行了拆分,并且我已经通过换行符中的逗号将其分解为更多,以便为我提供三件我正在寻找的内容并将其命名为以后用于该程序。我想要做的是在其中一个对象匹配某个值时删除一个项目。

var values=[];
var output="";
for(i = 0; i < csv_split.length; i++){
    csv_split[i] = csv_split[i].split(',') //Splits the csv file that's already split by new line by commas
                 values[i]={}
    values[i].Name=newline_split[i][1]; //finds the second object and names it values.name
    values[i].Rev=newline_split[i][2]; //finds the third object and names it values.rev
    values[i].URL=newline_split[i][9]; //finds the eighth object and names it values.url
}

稍后再使用,这样我就可以获得我正在寻找的值的列表。

for (i=0; i < values.length; i++){
    output += values[i].Name + ',';
    output += values[i].Rev + ',';
    output += values[i].URL+ ',';
    output += "\n\n||||||";
}

所以我所做的就是将这段代码修改为第一个for循环:

if (values[i].Rev == "NO ACCESS") {
    csv_split[i].splice(0,1);
}

这背后的想法是,如果values.Rev匹配“NO ACCESS”,它将删除整个csv_split [i],以便稍后它不会在输出中显示它。

现在运行脚本会提供整个输出,无论values.Rev是否匹配“NO ACCESS”。我错过了什么?

1 个答案:

答案 0 :(得分:2)

使用filter方法可以更轻松地完成这项工作。你这样使用它:

var finalArr = values.filter(function(val) { return val.Rev != "NO ACCESS"; });

这应该为您提供一系列有权访问的内容。