首页 > 解决方案 > 如何选择一个随机变量,然后从变量列表中选择一个随机变量?

问题描述

我有两个按钮。一个用于随机电影风味,例如。['爱','战争','真实']。我有这个工作。问题是,第二个按钮应该从选择的电影风味中选择随机电影。前任。如果选择“Love”,新的随机数将来自 Love List ['Noel', 'Titanic', 'Pearl Harbor']。感谢任何帮助,谢谢大家... ^ _ ^ ...

var movieFlavor = ['Love', 'War', 'True'];



var loveMovies = ['Titanic', 'Noel', 'Pearl Harbor',

]


var warMovies = ['PT-109', 'Firebase Gloria', 'Pearl Harbor',

]

var trueMovies = ['PT-109', 'Remember the Titians', 'Pearl Harbor',
]


function newRandomMovieFlavor() {
    var randomFlavor = Math.floor(Math.random() * (movieFlavor.length));
    document.getElementById('movieDisplay1').innerHTML = movieFlavor[randomFlavor];
}


function newRandomMovie() {
    var randomMovie = Math.floor(Math.random() * (movieFlavor.length * randomFlavor));
    document.getElementById('movieDisplay2').innerHTML = movieFlavor.length * randomFlavor[randomMovie];
}

标签: javascriptarraysrandom

解决方案


您可以在Math.floor(Math.random() * moviesByType.length)数组长度范围内生成随机索引。

我维护了一个以电影类型为键的电影字典。

单击按钮时,我们可以读取movie-type属性,然后按类型从字典中获取列表,并从该数组中返回一个随机元素。

const movieList = {
  love: ['Love1', 'Love2', 'Love3'],
  war: ['War1', 'War2', 'War3'],
  true: ['True1', 'True2', 'True3']
};

const getRandomMovie = (e) => {
  const type = e.target.getAttribute('movie-type');
  let moviesByType = movieList[type] || [];
  
  if(moviesByType.length) {
    const randomIndex = Math.floor(Math.random() * moviesByType.length);
    const movie = moviesByType[randomIndex];
    console.log(`${type}: ${movie}`);
  }
}

document.querySelectorAll('button').forEach(btn => btn.onclick=getRandomMovie);
<button movie-type="love">
  Love
</button>
<button movie-type="war">
  War
</button>
<button movie-type="true">
  True
</button>


推荐阅读