其他分享
首页 > 其他分享> > 对数组或对象通过循环改变其值产生的bug及解决方式

对数组或对象通过循环改变其值产生的bug及解决方式

作者:互联网

一个数组,

const bomtypeOptions = [   "通过审查",   "没有物料编码",   "数据库无对应数据",   "不匹配",   "优选级别",   "禁用料",   "临时料",   "不插件",   "有顶底层" ]; 通过循环的方式改变其值,变成1234.... for(let i=0;i<bomtypeOptions.length;i++){            if(bomtypeOptions[i]=="通过审查"){                 bomtypeOptions[i]="1"            }else if(bomtypeOptions[i]=="没有物料编码"){                   bomtypeOptions[i]="2"            }else if(bomtypeOptions[i]=="数据库无对应数据"){                   bomtypeOptions[i]="3"            }else if(bomtypeOptions[i]=="不匹配"){                   bomtypeOptions[i]="4"            }else if(bomtypeOptions[i]=="优选级别"){                   bomtypeOptions[i]="5"            }else if(bomtypeOptions[i]=="禁用料"){                   bomtypeOptions[i]="6"            }else if(bomtypeOptions[i]=="临时料"){                   bomtypeOptions[i]="7"            }else if(bomtypeOptions[i]=="不插件"){                   bomtypeOptions[i]="8"            }else if(bomtypeOptions[i]=="有顶底层"){                   bomtypeOptions[i]="9"            }       } 这样写会出问题,导致结果被改变,不要用原数组去赋值!!!; 正确解决方式应该把数组深拷贝一下(对象也是同理),用拷贝过的数组去循环,不要用原数组去赋值!!! let choosetype = bomtypeOptions.concat(); for(let i=0;i<choosetype.length;i++){            if(choosetype[i]=="通过审查"){                 choosetype[i]="1"            }else if(choosetype[i]=="没有物料编码"){                   choosetype[i]="2"            }else if(choosetype[i]=="数据库无对应数据"){                   choosetype[i]="3"            }else if(choosetype[i]=="不匹配"){                   choosetype[i]="4"            }else if(choosetype[i]=="优选级别"){                   choosetype[i]="5"            }else if(choosetype[i]=="禁用料"){                   choosetype[i]="6"            }else if(choosetype[i]=="临时料"){                   choosetype[i]="7"            }else if(choosetype[i]=="不插件"){                   choosetype[i]="8"            }else if(choosetype[i]=="有顶底层"){                   choosetype[i]="9"            }       } bomtypeOptions=choosetype;   深拷贝方法: 数组:let choosetype = bomtypeOptions.concat(); 对象:let checkdata = Object.assign({}, this.objInsteadData);

标签:bomtypeOptions,else,choosetype,let,数组,通过审查,其值,bug
来源: https://www.cnblogs.com/shanxinxin/p/12888570.html