【问题标题】:Remove an object from an array on a condition根据条件从数组中删除对象
【发布时间】:2016-03-29 16:05:35
【问题描述】:

我有一个 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”,现在运行脚本都会给出整个输出。我错过了什么?

【问题讨论】:

  • 您的意思是在不满足条件时删除整个 CSV 行?
  • 我想在满足条件时删除整行 csv_split。例如,如果在 csv_split[1] 中 values[1].Rev 的值等于“NO ACCESS”,我想从 csv_split[1] 中删除所有值,以便稍后在第二个代码框中显示它不会显示 values.Rev = "NO ACCESS" 的任何行

标签: javascript arrays if-statement for-loop


【解决方案1】:

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

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

这应该会给你一个包含所有可以访问的东西的数组。

【讨论】:

  • 我正在使用使用 javascript 的第 3 方软件,但似乎某些功能未启用,包括过滤器功能。我可以手动创建过滤器功能,但是我找不到过滤器功能的源代码在哪里。是否有在线资源可以找到 javascript 中已有函数的源代码?
  • 我不知道,但你可以尝试谷歌搜索。 javascript.com 可能是一个不错的起点。你在用什么禁用内置功能?
猜你喜欢
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多