【问题标题】:Removing an already picked phrase from an array从数组中删除已经选择的短语
【发布时间】:2017-05-13 03:20:14
【问题描述】:

我正在处理嵌入在 Adob​​e Animate CC 中的代码。它工作正常。但是我想让已经选择的系列从数组中删除,这样当我点击按钮时我总是选择一个新的系列。我已经搜索了很多,但还没有找到任何有效的方法。谁能帮帮我?

代码如下:

var myShows = ['Bones', 'Psych', 'Big Bang Theory', 'Mad Men', 
'Breaking Bad', 'Modern Family', 'Game of Thrones', 'Dexter'];


this.knapp.addEventListener("click", playClicked.bind(this));
function playClicked() {
    var show = myShows[Math.floor(Math.random() * myShows.length)];
    this.tekst.text = show

}

【问题讨论】:

  • 你可能会喜欢var show = myShows.splice(Math.floor(Math.random() * myShows.length),1)[0]; 这样随机选择的节目会从myShows 数组中删除,并且下次无法选择。
  • 太棒了!它工作得很好,而且很简单。谢谢!

标签: javascript arrays jquery-animate adobe


【解决方案1】:

这些方面的东西应该可以工作。以下是我尝试将您的代码放回:

var allShows = ['Bones', 'Psych', 'Big Bang Theory', 'Mad Men', 
'Breaking Bad', 'Modern Family', 'Game of Thrones', 'Dexter'];
var currentShow = allShows[0]; //Just to initialize 


// Filter out the one you have selected
function getAvailableShows() {
  return allShows.filter(function(e) { return e !== currentShow })
}

function playClicked() {
  // make a pool - current one playing
  var availableShows = getAvailableShows(); 

  // choose one from random
  var show = availableShows[Math.floor(Math.random() * availableShows.length)]; 

  // update current show
  currentShow = show;

  // updae text
  this.tekst.text = show;
}

this.knapp.addEventListener("click", playClicked.bind(this));

这是一个代码笔,显示它通过控制台日志工作。 https://codepen.io/easement/pen/MbNwdw

【讨论】:

  • 非常感谢您抽出宝贵时间帮助我。尽管您的代码似乎与我已有的代码相同。被选中的节目重新出现。你认为有可能以随机顺序选择所有节目而不选择两次或更多次吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
  • 2014-09-30
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
相关资源
最近更新 更多