NodeJS 如何检测是否传递了一个var,然后阻止它再次传递?

liwlm1x9  于 2022-12-22  发布在  Node.js
关注(0)|答案(1)|浏览(125)

我有一个快速的问题,我的项目是一个快速的4选项答案,与单选按钮和图片显示,现在我有图片和答案存储在一个文本文件中,这样我的JS检测它读什么,然后将其传递到HTML,现在我使用这个函数来选择一个随机行:

fetch('./Test.txt', {
  credentials: 'same-origin',
  mode: 'same-origin',
}) // reads the file  as a buffer
  .then(function(response) {
    return response.text();

  })
  .then(function(data) {

    a = data
    a = a.toString() // makes the buffer into a readable string
    a = a.split('\n') // makes all the items in the list
    randomNum = Math.floor(Math.random() * {The number of lines that you have in the text file}) // makes a math equation to get a random line from the text file

现在,我如何检测randomNum是否传递了一个已经传递过的行?或者说,我如何检查函数randomNum是否传递了一个已经传递过的行?

k5ifujac

k5ifujac1#

您的客户端Javascript代码可以保存一组已经看过的图片,并将其存储在cookie中。在您的function(data) {...}中当前randomNum = Math.floor(...)的位置执行以下语句:

var picturesSeen = JSON.parse((document.cookie || "a=[]").substring(2));
if (picturesSeen.length === a.length)
  alert("Sorry, no more pictures");
else {
  while (true) {
    var randomNum = Math.floor(Math.random() * a.length);
    if (picturesSeen.indexOf(randomNum) === -1) {
      picturesSeen.push(randomNum);
      break;
    }
  }
  document.cookie = "a=" + JSON.stringify(picturesSeen);
}

该cookie在页面重新加载后仍然有效。
您可以使用以下命令“重置”Cookie

document.cookie = "a=[]";

相关问题