Javascript 环内有多个if雄蕊

Javascript 环内有多个if雄蕊,javascript,Javascript,我有这样一个for循环: for(var i = 0; i < data.reviews.length; i++){ if(data.reviews[i].rating.overall > 80){ console.log(i); if(i > 1){ console.log('more than 80 and more than 1'); } else{ console.log('more

我有这样一个for循环:

for(var i = 0; i < data.reviews.length; i++){
    if(data.reviews[i].rating.overall > 80){
      console.log(i);
      if(i > 1){
        console.log('more than 80 and more than 1');
      }
      else{
        console.log('more than 80 and only 1');
      }

    }
}
我需要满足一些条件才能附加一些HTML:

1) 如果总体评论超过80篇,并且有多篇评论(附加幻灯片)

2) 如果评论总数超过80篇,并且只有一篇评论(添加纯文本,无幻灯片的jus音调评论)

根据提供的评论数据,我应该得到
console.log('80多个和1多个')仅打印两次,而在我的控制台中,我得到:

more than 80 and only 1  
more than 80 and only 1  
more than 80 and more than 1
试试这个~

      var count = 0;
      for(var i = 0; i < data.reviews.length; i++){
        if(data.reviews[i].rating.overall > 80){
          count++;
          }
      }
      if(count > 1){
            console.log('more than 80 and more than 1');
          }
          else{
            console.log('more than 80 and only 1');
          }
            //current.find(".reviews-wrapper ul").append("<li data-orbit-slide='headline-" + [i] + "'>" + data.reviews[i].notes + "<p class='bold'>" + data.reviews[i].user.nickname + ", " + data.reviews[i].groupInformation.groupTypeCode + ", " + data.reviews[i].groupInformation.age + "</p></li>"); 
var计数=0;
对于(var i=0;i80){
计数++;
}
}
如果(计数>1){
console.log(“超过80和超过1”);
}
否则{
console.log('80多个,仅1个');
}
//当前.find(“.reviews wrapper ul”).append(“
  • ”+数据。评论[i]。notes+“

    ”+数据。评论[i]。user.昵称+”,“+数据。评论[i]。groupInformation.age+”

  • ”;
    您是否试图计算评级超过80

    var count = 0
    
    for(var i = 0; i < data.reviews.length; i++){
        var rating = data.reviews[i].rating.overall;
    
        switch (rating) {
            case (rating > 80):
                  count++;
                break;
        }
    }
    
    if ( count > 1 ) {
        console.log('more than 80 and more than 1');
    } else {
        console.log('more than 80 and only 1');
    }
    
    var计数=0
    对于(var i=0;i80):
    计数++;
    打破
    }
    }
    如果(计数>1){
    console.log(“超过80和超过1”);
    }否则{
    console.log('80多个,仅1个');
    }
    

    使用switch/case,如果您想更进一步,您可以在每个括号中附加所需的html

    如果我正确理解了您的问题,那么您只需更改内部的
    if
    语句来检查有多少评论,而不是重复评论的计数器

    var数据={
    “审查”:[
    {
    “评级”:{“总体”:91}
    },
    {
    “评级”:{“总体”:77}
    },
    {
    “评级”:{“总体”:94}
    },
    {
    “评级”:{“总体”:74}
    }
    ]
    };
    对于(var i=0,l=data.reviews.length;i80){
    如果(l>1){//检查总计数,而不是当前索引
    写文档('80多个和1多个
    '); } 否则{ 写文档('80多个,只有1个
    '); } }
    }
    因此,您提供的代码存在的问题是它与您的问题不匹配。 您要求的是三个案例:

    • 如果有一次以上的审查,且总体审查结果超过80
    • 如果只有一次审查,且总体审查结果在80%以上
    • 其他任何情况(有效地说,总数小于80)
    但是,您使用“i”您的迭代器来回答“是否有多个审阅”的问题,在这种情况下,它回答了“当前迭代是否是审阅中此循环的第三次或以后的迭代”(由于数组的索引为零,“i>1”在第三次迭代中将为真)

    您的问题不清楚您是只想将超过80条评论计入总评论数,还是仅计算评论总数,因此我将为您提供几个循环选项:

    var sizeString=''
    if(data.reviews.length > 1) {
       sizeString=' and more than 1';
    }
    for(var i = 0; i< data.reviews.length; i++) {
      if(data.reviews[i].rating.overall > 80){
        console.log('more than 80'+sizeString);
      }
    }
    
    var sizeString=''
    如果(data.reviews.length>1){
    sizeString='和大于1';
    }
    对于(var i=0;i80){
    控制台日志('80'以上+大小限制);
    }
    }
    
    或者,如果仅当超过1次80分以上的审查时才计算:

    var sizeString=''
    var numOver80=0;
    for(var i = 0; i< data.reviews.length; i++) {
      // This will simply find out if there are at least two over 80 ratings
      if(data.reviews[i].rating.overall > 80){
        numOver80++;
        if(numOver80 > 1){
          sizeString=' and more than 1';
          break; // Unless you want to get the actual total
        }
      }
    }
    for(var i = 0; i< data.reviews.length; i++) {
      if(data.reviews[i].rating.overall > 80) {
        console.log('more than 80'+sizeString);
      }
    }
    
    var sizeString=''
    var numOver80=0;
    对于(var i=0;i80){
    numOver80++;
    如果(numOver80>1){
    sizeString='和大于1';
    break;//除非您想得到实际总数
    }
    }
    }
    对于(var i=0;i80){
    控制台日志('80'以上+大小限制);
    }
    }
    

    希望这些可以为您指明正确的方向。

    您可以编辑您的问题,使其更清楚地说明您的问题吗?我在控制台中得到的不是我认为脚本应该打印的内容。请记住数组索引是基于0的。此外,控制台正在打印的内容正是您所描述的内容。您的代码毫无意义。为什么您会在意
    数据的前两个索引中是否出现高评级。评论
    ?你需要弄清楚你想用词做什么……无论如何,你似乎想知道有多少评论超过80篇。如果是这样,请在数组上使用
    .filter()
    ,将其筛选到所需的子集,然后根据发现的数目执行操作。这样地:
    var sizeString=''
    var numOver80=0;
    for(var i = 0; i< data.reviews.length; i++) {
      // This will simply find out if there are at least two over 80 ratings
      if(data.reviews[i].rating.overall > 80){
        numOver80++;
        if(numOver80 > 1){
          sizeString=' and more than 1';
          break; // Unless you want to get the actual total
        }
      }
    }
    for(var i = 0; i< data.reviews.length; i++) {
      if(data.reviews[i].rating.overall > 80) {
        console.log('more than 80'+sizeString);
      }
    }