我想往数组里push对象,先开始判断对象是否是空,可以用return直接停止,但是到判断数组中是否存在时,js的循环虽然可以停止,但是始终会执行后面的push操作,请问我该如何停止
dataAdd(thingsId){
const moneyData = this.moneyData
if(thingsId===''){
this.$message.error({
message:'请选择设备'
})
return
}
moneyData.every(item=>{
if(item.thingsId===thingsId){
this.$message.error({
message:'已有此设备'
})
return false
}
})
// return false 只能停止循环,始终会执行虽然将数据push进去的操作,我希望像上面if一样,return回去,不执行后面的语句
moneyData.push(JSON.parse(JSON.stringify(this.moneyForm)))
},
var status = true;
moneyData.every(item=>{
if(item.thingsId===thingsId){
this.$message.error({
message:'已有此设备'
})
status = false;
return false
}
})
if(status){
moneyData.push(JSON.parse(JSON.stringify(this.moneyForm)))
}
你看可否?
你的判断已有设备跟push方法,并没有直接的联系,是设计逻辑的问题。
判断已有设备,判断的方法返回return false,方法结束,继续执行下面的代码。(不是return,直接结束方法。)
可以将return false 改成 return,如果状态成功与否还有其他作业,可以用另外的变量来接收,通过if判断控制push的执行。