在javascript中从数组中删除空行

时间:2016-06-07 09:47:26

标签: javascript

我有一个空行的数组,我有字段" codeOperation"为了测试一行是否为空,这是我的表:

enter image description here

客户端应该用数据填充表格并将其余行留空,我想要的是当客户点击" ADD" boutton只发送数据,删除情感行。

这是我的代码:

//function to send the Data
$scope.updateGamme= function(gamme) {

    gamme.listElementGammeOf = $scope.finalOperationsList;

    $scope.DeleteEmptyRows(gamme.listElementGammeOf);

             $http
                 .put(
                     baseUrl +
                     "/gamme/update",
                     gamme)
                 .success(
                     function(gammeModifiee) {
                         //send the Data and update 
                            .....     
                     }); }

//delete the empty rows
$scope.DeleteEmptyRows = function(listelements){
            for (var i = 0; i < listelements.length; i++) {
                if (listelements[i].operationCode == "")
                    listelements.splice(i, 1);
            }

我使用此代码得到的结果是,每个示例我得到5个项目,我的代码将删除第3行和第4行第2行未删除

我的代码有问题吗?请帮我找到。

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

看起来像

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

应该是

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

当您迭代并从数组中删除项目时,您应该减少索引,以免因索引移动而丢失项目。

答案 1 :(得分:2)

以相反的顺序尝试拼接。即从最后一行中删除行 我没有尝试过你的代码,但必须有效。

 $scope.DeleteEmptyRows = function(listelements){
        for (var i = listelements.length-1; i >=0; i--) {
            if (listelements[i].operationCode == "") {
                listelements.splice(i, 1);
                         }
                   }
  }

我尝试的例子是......

var array = ["1","2","","",""];  
for(var i=array.length-1;i>=0;i--)
{
    if(array[i]=="")
       array.splice(i,1);
}