【问题标题】:How can I replace a number with a conditional statement in a for loop?如何在 for 循环中用条件语句替换数字?
【发布时间】:2015-07-06 05:48:17
【问题描述】:

我需要在我的 for 循环中使用 if 语句替换一个值。确切的说明是:

<script></script> 元素添加到<head> 部分 首先使用Math.random() 选择介于 1(含)和 110(含)之间的随机整数的页面 功能。然后,您的代码应将每个整数从 1 到(但不包括)随机整数写入 除数字 29、71 和 105 之外的页,应拼出(即“二十九”、“七十一”、 “一百五”)。您需要使用 while 循环或 for 循环进行迭代和条件语句 打印特殊情况。 示例:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 二十九 30 31 32 33 34 35

到目前为止,我的脚本已经有了这个

<script>
var display = Math.floor(1 + Math.random() * 110);

for(var i=1; i < display; i++)
document.writeln(i);



if (i >= 29) 
{
//[29] = "twenty-nine"
    document.write(i[29].replace(29, "twenty-nine"));
}
if (i >= 71)
{
    document.write("seventy-one ");
}
if (i >= 105) 
{
    document.write("one-hundred-five ");
}

</script>

当数字不在指定数组中时,我不知道如何替换它们。

【问题讨论】:

  • 您缺少一些花括号 {} 来定义 for 循环的主体。为什么&gt;=?该任务显然符合其要求“......除了数字 29、71 和 105......”而不是“......超过 29 的每个数字......”;)
  • 感谢有道理!感谢您的帮助。我的逻辑是错误地认为只有在选择的随机整数是 29、71 或 105 时才会显示文本。如何删除数字 29、71 和 105 以替换为文本?我使用了花括号并将我的 >= 更改为 == 并且它仍然包含数字
  • 正如 Arun 在更新您的评论时所写:)

标签: javascript if-statement for-loop


【解决方案1】:

你在循环中有问题,因为你没有使用循环块,只有for之后的立即语句在循环中执行。

此外,您的 if 条件不正确,因为它们比较 greater than or equals to 而不是检查是否相等。

但你可以简化如下给出的逻辑

var display = Math.floor(1 + Math.random() * 110),
  specials = {
    29: 'twenty-nine',
    71: 'seventy-one',
    105: 'one-hundred-five'
  };

for (var i = 1; i < display; i++)
  document.writeln(specials[i] || i);

让你的代码工作

var display = Math.floor(1 + Math.random() * 110);
for (var i = 1; i < display; i++) {//for block
  if (i == 29) {
    document.writeln("twenty-nine");
  } else if (i == 71) {
    document.writeln("seventy-one ");
  } else if (i == 105) {
    document.writeln("one-hundred-five ");
  } else {
    document.writeln(i);
  }
}

【讨论】:

  • 谢谢你,这很好用。有没有办法将特价商品合并到条件语句中?
  • 谢谢!这是完美的 :) 我真的很感谢你的帮助!
【解决方案2】:

关闭!两个指针:

  1. 使用花括号 {} 以便执行语句块,而不是单个语句,用于循环和条件。你应该有for ... { ... },而不是for ... ...

  2. 你的意思是i &gt;= 29?或者可能是不同的运营商?

【讨论】:

  • 我不确定哪一个是正确的,但这段代码只是在循环结束时写入文本,而不是将 29 的值替换为“二十九”
  • 不同的运算符!所以i29 被称为操作数,并且操作符对操作数进行操作:) 如果左操作数大于或等于右操作数,则计算结果为真。那是我们想要的吗?提示提示不全!循环问题是因为缺少花括号。所以它在循环中执行document.writeln(i); 行,但其他部分只执行一次。在要重复的部分周围添加一些大括号!
【解决方案3】:

你可以为它制定一个通用的解决方案。如果你拆分数字,那么你可以循环遍历它。

function numberToWords(value) {
  var numbers = value.split("");
  var decs =;["zero","one","two","three","four","five","six","seven","eight","nine"]
  var tens = ["ten","twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety"];
  var s="";
  for(var i=0;i<numbers.length;i++)
  {
    var ri=numbers.lenght-i; //reverse index
    if (ri==0) s+= dec[ri];
    else if (ri==1) s+= tens[ri];
    else if (ri==2) s+= dec[ri]+"-hundred";
    s+="-";
  }
  return s;
}

然后使用numberToWords(28)

【讨论】:

    猜你喜欢
    • 2011-02-08
    • 2014-03-30
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    相关资源
    最近更新 更多