检查行A并对其进行计数,直到它变为行B javascript

时间:2016-02-12 22:34:57

标签: javascript

如果我的标题有点误导,我很抱歉,如果你不理解我,我真的很抱歉我的英语,它不是我的母语!

我会尽力解释我想要实现的目标。我尝试过去整整两天这样做,我真的需要你的帮助!

我们说我有以下数字的数组:

2 4 6 8 10 1 3 5 2 4

我试图计算连续多少偶数和奇数,并且当偶数/奇数变化时 - 再次计算它。所以我上面的数组应该是:

5(连续5个偶数)3(连续3个奇数行)(连续2行)

如果计数没有停止,它应该发布"<br>"而不是计算平均值/赔率,因此它可以在每一行附近显示一次结果。

检查此示例图片: enter image description here

我有这个正在计算的脚本,但它有一些问题:当数字是偶数时,它显示计数两次。接下来,我无法弄清楚如何将<br>添加到这些行,其中计数和仅在计数的最后一行添加结果。我的计数结果也应该在顶部,所以脚本应该从最后算起,我想,当我尝试i--它开始无限循环......

var digits = ["2, 4, 6, 8, 10, 1, 3, 5, 2, 4"]

var evenCount=1, oddCount=1;

for(var i =0; i < digits.length; i++){

if(digits[i] % 2 ==0){

     var oddCount=1;

       $("#res").append(evenCount + " (l) <br>");
      evenCount++;
     }
    else
    var evenCount=1;

       $("#res").append(oddCount + " (n) <br>");
       oddCount++;
}

检查我的小提琴,看看它在行动: https://jsfiddle.net/xk861vf9/8/

1 个答案:

答案 0 :(得分:1)

首先,我认为您的代码显示计数两次,因为您在“for循环”和“其他”之后错过了两个'{'。修复代码格式后,我再也看不到它的计数两次了。

$(document).ready(function() {
  $("#sub").bind("click", function() {
    $("#res").html("");

    var digits = $('#content').find("span").map(function() {
      return $(this).text();
    });

    var evenCount = 1;
    var oddCount = 1;

    for(var i =0; i < digits.length; i++) {
      if (digits[i] % 2 ==0) {
        oddCount = 1;

        $("#res").append(evenCount + " (l) <br>");
        evenCount++;
      } else {
        evenCount=1;

        $("#res").append(oddCount + " (n) <br>");
        oddCount++;
      }
    }      
  });
});

其次,他们有很多方法可以实现这一点。以这个jsfiddle代码为例。

https://jsfiddle.net/xk861vf9/11/

概念是在偶数/奇数改变后打印计数的数字。然后使用for循环打印<br> x次(计数数字-1),因此如果计数的数字是4,则会有3 <br>个标签。

我们还必须检查当前号码是否是阵列中的最后一个号码并打印计算的号码,否则将跳过最后计算的号码。

希望这有帮助! :)

聚苯乙烯。抱歉我的英语不好,也不是我的母语。