最近公司有个项目需要做一个配码表类似下图
开始时处理更新的问题是直接拿取所有数据进行提交,没有更新的数据也提交了导致效率大大折扣,后来是只提交修改过的数据和新建的数据进行提交,因为最后提交的是一个数组,新建的数据还好,更新的数据会导致重复添加到数组,即使遍历数组进行if和else判断,if里面判断是否存在数据id进行特定处理是没有问题的但是在else里面也会随着遍历添加一些没用的数据
解决方法
var rows=[]
var index = -1;
for (var i = 0; i < rows.length; i++) {
debugger
if (a[i].ID ==ID) {
index = i;
break;
}
}
if (index != -1) {
rows.splice(index, 1);
}
arr1.push({
ID:ID,
eadId: HeadId,
SizeGroupId: SizeGroupId,
SizeGroupName: SizeGroupName,
TargetPortName: TargetPortName,
Number: Number,
CollocationType: CollocationType,
TotalNumber: TotalNumber,
})
定义一个数组和一个Number类型变量,遍历这个数组,如果是刚开始添加或编辑数据,这时候数组的长度是0直接跳过遍历push添加数据进去,如果不是长度不是0则遍历数组看ID是否存在,如果存在说明之前已经添加过或者编辑过这条数据,则拿到下标存到index,删除之前编辑过并且存储在数组里的数据,把再次更新的这条数据插入数组