我的代码将只进入第一个if语句,在其中检查headline1等的键值...第一个if语句正常工作,但当第一个if语句与以下任何if语句一起使用时,它将不起作用不是真的我将第二条语句切换到第一条语句,在该语句中检查“ desc1”,然后仅对该语句起作用。
此功能的目的是检查对象的每个键,并在键的值超过一定长度时返回键,这样我可以添加一个类并向用户显示一些警告。这是在Vue JS中,因此广告在数据中,characterCheck在计算属性中。
ads: [
{
headline1: '_keyword_',
headline2: 'Online',
headline3: 'Free',
desc1: 'Buy online _keyword_',
desc2: ' Vast collection of _keyword_',
finalurl: 'www.books.com',
path1: '',
path2: '',
boolean: true
}
]
characterCheck () {
for(var x = 0; x < this.ads.length; x++){
if(this.ads[x]['boolean'] == true) {
for(var key in this.ads[x]){
var length = this.ads[x][key].replace(/_keyword_/g, this.activeKeyword).length
if( key === 'headline1' || key === 'headline2' || key === 'headline3'){
if(length > 30){
return key
}
} else if( key == 'desc1' || key == 'desc2'){
if(length > 90){
return key
}
} else if( key == 'path1' || key == 'path2'){
if(length > 15){
return key
}
} else {
return false
}
}
}
}
}
答案 0 :(得分:1)
当您的第一个嵌套if
条件失败时,代码将转到下一个后续的else-if
。对于某些特定值,所有if
和else-if
块都会失败,并且代码将落在包含else
语句的最后return
块上。
如果您的代码甚至到达一次,整个函数的执行将立即停止并返回false
值。
既然如此,只要您还没有遍历所有值,就希望等待,删除else
部分,并在for循环的末尾添加一个简单的return
语句,如下所示:< / p>
function characterCheck () {
for(var x = 0; x < this.ads.length; x++) {
if(this.ads[x]['boolean'] == true) {
for(var key in this.ads[x]) {
var length = this.ads[x][key].replace(/_keyword_/g, this.activeKeyword).length
if( key === 'headline1' || key === 'headline2' || key === 'headline3') {
if(length > 30) {
return key
}
}
else if( key == 'desc1' || key == 'desc2') {
if(length > 90) {
return key
}
} else if( key == 'path1' || key == 'path2') {
if(length > 15) {
return key
}
}
}
}
}
return false
}