javascript - 事实生成器(非随机)

标签 javascript function random

我正在向我公司的“关于”页面添加一个随机事实生成器。目前看起来像这样:

var targetemployee = document.getElementById('targetemployee');
    var factsemployee = [

      'Fact1',
      'Fact2',
      'Fact3',
      'Fact4',
      'Fact5',
    ];
    function newEmployeeFact () {
      var i = Math.floor(Math.random() * factsemployee.length) | 0;
      targetemployee.innerText = factsemployee[i]

    }
    
    newEmployeeFact();
    <div style="text-align: center;">

    <p class="funfact" id="targetemployee"></p><button type="button" class="hover-shadow" style="text-align: middle; font-size: 0.8em; bottom: 0px" onclick="newEmployeeFact()"> NEW FACT </button>

    </div>

我的问题是,点击几次后,它有时会显示相同的事实,而不是新的事实,所以我只想更改它,以便它是连续的。有小费吗?我是 JS 初学者,非常感谢大家的帮助!

最佳答案

这样的事情怎么样?

var targetemployee = document.getElementById('targetemployee');

var factsOrig = [
    'Fact1',
    'Fact2',
    'Fact3',
    'Fact4',
    'Fact5',
  ];

var factsemployee = factsOrig.slice(0);

function newEmployeeFact () {
    if (!factsemployee.length) {
        factsemployee = factsOrig.slice(0); // Refill array
    }
    var i = Math.floor(Math.random() * factsemployee.length) | 0;
    targetemployee.innerText = factsemployee[i]
    factsemployee.splice(i, 1); // Remove from active array
}

newEmployeeFact();
<div style="text-align: center;">

<p class="funfact" id="targetemployee"></p><button type="button" class="hover-shadow" style="text-align: middle; font-size: 0.8em; bottom: 0px" onclick="newEmployeeFact()"> NEW FACT </button>

</div>

关于javascript - 事实生成器(非随机),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48933333/

相关文章:

python - 如何从一个大文件中随机删除多行?

c++ - 函数和非捕获 lambda 之间的区别

javascript - jQuery Orbit - 如何制作随机幻灯片?

javascript - session 未通过 AJAX 正确发送

javascript - 枚举作为 JSDoc 中的 @param 类型

ios - 从另一个 ViewController 调用函数发现错误

php - 如何避免在 PHP 中重复 MySQL 查询代码的类似部分?

java - 以不同的概率随机选择一个对象

JavaScript 对象表示法 - 在同一对象内使用方法?

javascript - 什么会导致点击事件多次触发?