从数组中删除项的JavaScript代码出错

时间:2017-08-14 07:02:26

标签: javascript arrays

我正在尝试从数组中删除项目:

for (var i = 0; i < transformedColumns.length; i++) {
  if (data[0].indexOf(transformedColumns[i] > -1)) {                   
       delete transformedColumns[i];
  }
}

我正在做的事情是检查transformedColumns [i]中的值是否存在于data [0]数组中。如果是,则应从transformedColumns中删除该值。

但是当我喜欢上面的内容时,整个transformedColumns变得未定义。

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

这是有效的,除了它从data [0]中不存在的transformedColumns中删除一个值。假设transformedColumns包含[“Item No”,“Item Name”,“Item State”],data [0]包含[“Item No”,Item Name“]。应该从transformedColumnes中删除的唯一值是Item No和项目名称,而不是项目状态。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

data[0].indexOf(transformedColumns[i] > -1)

You having wrong condition statement. your condition should be

(data[0].indexOf(transformedColumns[i]) >-1 )

You are passing a condition to indexOf which fails

indexOf(transformedColumns[i] > -1)

That is the reason it is returning true for all the cases. Should work after you fix that

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