我有一个空行的数组,我有字段" codeOperation"为了测试一行是否为空,这是我的表:
客户端应该用数据填充表格并将其余行留空,我想要的是当客户点击" 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行未删除
我的代码有问题吗?请帮我找到。
感谢您的帮助
答案 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);
}