原因
当使用forEach、map进行数组遍历时,return并不能终止函数执行后续代码;
在forEach、map方法中
无论return为true还是false都相当于循环中 终止当前循环继续执行下一次循环。
// 举例 forEach、map 失败 不能终止 会继续执行 循环外的代码
this.data.partList.map(item=>{
if(!item.ppjPrice && !item.syjPrice && !item.ycjPrice){
common.errorTip(`报价金额不能为空`);
return
}
if(item.ppjPrice && !item.ppjCs){
common.errorTip(`请输入品牌件厂商!`);
return
}
if(item.syjPrice && !item.syjCs){
common.errorTip(`请输入适用件厂商!`);
return
}
})
解决方法:
方法一:使用foreach.break抛出异常终止循环
arr.forEach(item=>{
if(!item.ppjPrice && !item.syjPrice && !item.ycjPrice){
common.errorTip(`报价金额不能为空`);
foreach.break
}
if(item.ppjPrice && !item.ppjCs){
common.errorTip(`请输入品牌件厂商!`);
foreach.break
}
if(item.syjPrice && !item.syjCs){
common.errorTip(`请输入适用件厂商!`);
foreach.break
}
})
方法二:使用 for 循环
for (var i = 0; i < arr.length; i ++) {
if(!arr[i].ppjPrice && !arr[i].syjPrice && !arr[i].ycjPrice){
common.errorTip(`报价金额不能为空`);
return
}
if(arr[i].ppjPrice && !arr[i].ppjCs){
common.errorTip(`请输入品牌件厂商!`);
return
}
if(arr[i].syjPrice && !arr[i].syjCs){
common.errorTip(`请输入适用件厂商!`);
return
}
}