【问题标题】:Adding a dash between 2 even numbers after printing out randomly generated numbers in array打印出数组中随机生成的数字后,在 2 个偶数之间添加破折号
【发布时间】:2016-02-21 21:57:55
【问题描述】:

所以我一直在尝试在每个偶数之间添加一个破折号,但它没有输出破折号。我做错了什么?

生成20个随机数并放入数组

var i = 0;
mainarr = [];

do {
    mainarr[i]=parseInt(Math.random()*10);
    i++;
}
while (i<20);

打印 20 个数字并在每个偶数之间添加破折号

var endVal =20;
for (i=0; i< endVal ;)
{
    main.innerHTML += mainarr[i];

        if ((i%2)==0) {
            i++;
            if ((i % 2)==0)
                main.innerHTML += "-";
        }
        else
            i++;
}

【问题讨论】:

  • 您基本上是在循环中说“如果i 是偶数,则增加它,如果它又是偶数,则添加破折号”。如果i 是偶数,i+1 不可能是偶数...
  • 啊我明白你在说什么..所以我去 i -1 所以我可以回去添加连字符。无论如何,当我运行脚本时连字符都不会显示
  • 从不 everinnerHTML 上使用 += 样式操作 - 每个操作都需要浏览器序列化给定元素的内容,然后更新字符串,然后将它再次回到 DOM 中!
  • 只是丢失第二个if((i % 2)==0) 语句(你已经检查过它是否是偶数..)

标签: javascript arrays loops if-statement for-loop


【解决方案1】:

我会这样做,使用一个临时变量来存储最后一个值是否为偶数,并将其与当前值进行比较。

var length = mainarr.length,
    lastNumberEven = false,
    thisNumberEven,
    tmpString = '';
for (i = 0; i < length; i++) {
    if ((thisNumberEven = mainarr[i] % 2 == 0) && lastNumberEven) {
        tmpString += '-';
    }
    tmpString += mainarr[i];
    lastNumberEven = thisNumberEven;
}
main.innerHTML = tmpString;

【讨论】:

  • 哈哈,问得不好,因为他的意思不是偶数索引,而是偶数。 +1
猜你喜欢
  • 1970-01-01
  • 2022-09-24
  • 2020-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-02
相关资源
最近更新 更多