【问题标题】:How Can i Make Random Array Item The Same Each Time The Function is Executed [duplicate]每次执行函数时如何使随机数组项相同[重复]
【发布时间】:2021-06-30 11:45:42
【问题描述】:

这是我尝试过的代码:

<script>
    function random_Card() {
      var colors = ["red", "yellow"];
      var result = colors[Math.floor(Math.random() * colors.length)];
      return result;
    }
    
    document.write(
      '<div class="frontface"  style=background-color:' + random_Card() + "></div>"
    );
    document.write(
      '<div class="frontface"  style=background-color:' + random_Card() + "></div>"
    );
</script>

当变量 result 返回时,它就不一样了,例如,如果我执行 random_Card() 两次,我得到“红色”,而在第二次执行中,我得到“黄色”,但我希望它是相同的无论我执行该功能多少次。谢谢。

【问题讨论】:

  • 那么不要在函数内部调用Math.random等……
  • 你想达到什么目的?
  • random_Card() , random_Card() , random_Card() ...无论我在页面中执行多少次 random_Card() 函数,我都试图获得相同的输出。
  • 您想要一个返回非随机输出的随机函数吗?它有什么意义?
  • 如果您希望数字仅在第一次是随机的,您需要将它存储在某个地方,也许在一个闭包中

标签: javascript


【解决方案1】:

如前所述,此函数将始终返回一个随机数,因为它每次都会执行。 您可以做的是执行一次该函数,然后将其修复为创建的结果。 第二次调用该函数时,它只会产生完全相同的对象,不再执行任何操作。

var random_Card = function(){
  var colors = [
    "red",
    "yellow"
  ];
  var result = colors[Math.floor(Math.random()*colors.length)];
  random_Card = function() { return result; };
  return result;
};

【讨论】:

    【解决方案2】:

    您可以在脚本的开头设置索引。

    var index_this_time = Math.floor(Math.random()*2)
    function random_Card(){
        var colors = [
            "red",
            "yellow"
        ];
        var result = colors[index_this_time];
        return result;
    }
    

    【讨论】:

    • 当我在函数外使用 Math.random() 时它不起作用。 . .每次我执行该函数时,它一直说 random_Card 没有在控制台中定义。
    • @B14ckDz 这是一个无关的问题,可能有多种原因。但首先:document.write 是用于 DOM 操作的 not recommended,因为它已过时、缓慢且不适合任何不断发展的应用程序。请参阅the documentation about the DOM API on MDN 并使用不鼓励使用的方法和属性。确保您的问题与 document.write 无关,将其替换为其他内容,然后编辑您的帖子并显示修改后的代码。
    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    相关资源
    最近更新 更多