循环不会首先通过if语句

时间:2019-01-05 02:16:57

标签: javascript vue.js

我的代码将只进入第一个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
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

当您的第一个嵌套if条件失败时,代码将转到下一个后续的else-if。对于某些特定值,所有ifelse-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
}