2022年5月10日
jeecgboot 前端引用传递问题发现处理
项目中采购批次码打印一条采购单据需要打多张码,调试时发现自定义的码printCode 后缀(1/3)、(2/3)、(3/3)全部变为(3/3)、(3/3)、(3/3)展示出来了,代码如下
let newArr = []
for (let i = 0; i < record.length; i++) {
if (record[i].printNum==null||record[i].printNum=='') {
record[i].printNum = 1
}
let a = 1;
for (let j=0;j<record[i].printNum;j++) {
console.log(a)
record[i].printCode = record[i].batchNo + '('+a+'/'+record[i].printNum+')'
console.log(record[i])
newArr.push(record[i])
a +=1
}
}
上述代码存在数组newArr里面的printCode值 会被最后一条record[i]更新,原因是record[i]共用一条内存地址,newArr.push需要将新的一条record[i]放到新的内存地址中,需要将newArr.push(record[i])改为newArr.push({…record[i]})