从数组 Javascript 生成随机组
Generating Random Groups of Elments from an Array Javascript
嗨,我
正在为学校做项目,我正在尝试从名称列表中生成随机名称组。组的大小和组的数量将基于用户输入。我有从数组中随机生成单个元素的代码,但我需要一些帮助分组。这是我到目前为止的代码。它不起作用请帮忙谢谢
function yeah()
{
var arr = prompt("Enter your names").split(",")
console.log(arr);
var random = arr[Math.floor(Math.random() * arr.length)];
document.getElementById("h2").innerHTML = random;
}
function groups()
{
var arr = prompt("Enter your names").split(",");
var random = arr[Math.floor(Math.random() * arr.length)];
var numElem = document.getElementById("input2").value;
for (i=0;i <= arr.length; i++)
{
var newArr = [random];
console.log(newArr);
//print name to a new list
//remove name from old list
/* var arr = prompt("Enter your names").split(",")
var groupNum = document.getElementById("input1").value;
var newArrays = arr.length / groupNum; */
}
}
/* Reset */
* {
margin: 0;
padding: 0;
}
html,body {
height:100%;
margin:0;
font-family: 'Montserrat', 'sans-serif';
color:#424242;
overflow: hidden;
}
.display {
text-align: center;
display: table;
height:100%;
margin:0 auto;
}
.wrap {
display: table-cell;
vertical-align: middle;
}
p {
font-size: 50px; /* For lamers who don't support viewport sizing */
font-size:20vmin;
text-align: center;
margin: 0;
}
#h2 {
float: center;
font-size: 30vmin;
background-size: contain;
}
input.text-display {
display: inline-block;
color: #5E5E5E;
font: bold 20px arial;
text-decoration: none;
text-align: center;
margin: 20px auto;
padding: 15px 20px;
background: #EFF0F2;
border-radius: 4px;
border-top: 1px solid #F5F5F5;
box-shadow: inset 0 0 25px #E8E8E8, 0 1px 0 #C3C3C3, 0 2px 0 #C9C9C9, 0 2px 3px #333;
text-shadow: 0px 1px 0px #F5F5F5;
}
span.love {
display: block;
position: absolute;
bottom:10px;
width: 100%;
text-align: center;
}
span.love a {
text-decoration: none;
color:#D12026;
}
.twitter-follow-button {
vertical-align: text-bottom;
}
.twitter-share-button {
vertical-align: text-bottom;
}
<div class="display">
<div class="wrap">
<p>Your random value is:</p>
<div id="h2">Null</div>
<input class="text-display" type="button" onclick="yeah()" height="50px" width="50px" value="click to input data">
<!-- <input type="button" onclick="display()" value="display random"> -->
<br>
<input id="input1" value="Enter number of Groups">
<input id="input2" value="Enter number of elements per Group">
<input type="button" onclick="groups()">
</div>
</div>
这是第一个修复:要将新元素添加到数组中(就像您在 for 循环中所做的那样),您应该使用 arr.push() 方法。 在此之前,您还需要将 newArr 声明为空数组。
但是,我不完全确定您是否正在做您打算在小组功能中做的事情。 现在看起来您正在从列表中选择一个随机名称,然后,只要列表中有名称,就会将这个随机名称分配给新数组。
可能会帮助你的是写出你想要采取的步骤列表(我们称之为伪代码),然后将该列表转换为 JavaScript 代码。 在该列表中找到不一致之处可能比筛选有时令人困惑的代码要容易得多。
希望这有帮助,如果您还有其他问题,请告诉我!
不确定您的函数组在做什么。正如我所看到的,它将所有数据放入arr中,并以随机顺序放入newarr中。您应该检查用于创建新数组的 .push() 方法。它应该使您的代码正常工作。
示例代码:
var newarr = ["David", "Mic"];
newarr.push("Adeline");
结果:你的 newarr 将包含所有 3 个名字。
这是我
对你问题的解释。希望对您有所帮助。
<script>
var arr = new Array();
function yeah()
{
arr = prompt("Enter your names").split(",")
console.log(arr);
//var random = arr[Math.floor(Math.random() * arr.length)];
var allStudents ="";
for(var i=0; i<arr.length; i++) {
allStudents += arr[i] + "<br/>'n";
}
document.getElementById("h2").innerHTML = allStudents;
}
function groups()
{
var arr = prompt("Enter your names").split(",");
var groups = document.getElementById("groups").value;
var perGrp = document.getElementById("per_grp").value;
var innerText = "<h4>All</h4> ";
for(var i=0; i<arr.length; i++) {
innerText += arr[i] + ",";
}
innerText += "<br/>'n";
arr = shuffleArray(arr);
var finalGroups = new Array();
for(var i=0; i<groups; i++) {
// assign shuffled elements
var grpArr = "";
for(j=0; j<perGrp; j++) {
grpArr += arr[0] + ",";
arr.shift(); // removes first element from array
}
grpArr = grpArr.substring(0,grpArr.length - 1);
finalGroups[i] = grpArr;
}
innerText += "<h4>Groups</h4><br/>'n";
innerText += "<table width='100%' border='1'><tr>'n";
for(var i=0; i<groups; i++) {
// print groups
var j=i+1;
var grpArr = finalGroups[i].split(",");
innerText += "<td>Group " +j+"<br>";
for(var k=0; k < grpArr.length; k++){
innerText += grpArr[k] + "<br>";
}
innerText += "</td>'n";
}
innerText += "</tr></table>'n";
document.getElementById("FinalGroups").innerHTML = innerText;
}
/**
* Randomize array element order in-place.
* Using Durstenfeld shuffle algorithm.
*/
function shuffleArray(array) {
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}
</script>
<style>
/* Reset */
* {
margin: 0;
padding: 0;
}
html,body {
height:100%;
margin:0;
font-family: 'Montserrat', 'sans-serif';
color:#424242;
overflow: hidden;
}
.display {
text-align: center;
display: table;
height:100%;
margin:0 auto;
}
.wrap {
display: table-cell;
vertical-align: middle;
}
p {
font-size: 30px; /* For lamers who don't support viewport sizing */
font-size:10vmin;
text-align: center;
margin: 0;
}
#h2 {
float: center;
font-size: 10vmin;
background-size: contain;
}
input.text-display {
display: inline-block;
color: #5E5E5E;
font: bold 20px arial;
text-decoration: none;
text-align: center;
margin: 20px auto;
padding: 15px 20px;
background: #EFF0F2;
border-radius: 4px;
border-top: 1px solid #F5F5F5;
box-shadow: inset 0 0 25px #E8E8E8, 0 1px 0 #C3C3C3, 0 2px 0 #C9C9C9, 0 2px 3px #333;
text-shadow: 0px 1px 0px #F5F5F5;
}
span.love {
display: block;
position: absolute;
bottom:10px;
width: 100%;
text-align: center;
}
span.love a {
text-decoration: none;
color:#D12026;
}
.twitter-follow-button {
vertical-align: text-bottom;
}
.twitter-share-button {
vertical-align: text-bottom;
}
</style>
<div class="display">
<div class="wrap">
<p>Create Random Groups</p>
<!--<div id="h2"> </div>
<input class="text-display" type="button" onclick="yeah()" value="click to input data"> -->
<!-- <input type="button" onclick="display()" value="display random"> -->
<br>
<input id="groups" placeholder="Enter number of Groups" >
<input id="per_grp" placeholder="Enter number of elements per Group">
<br/>
<input type="button" value="Create Groups" onclick="groups()">
<div id="FinalGroups"></div>
</div>
</div>
相关文章:
- Jquery/Javascript:通过按下按钮显示数组中的随机图像
- Javascript-从随机的单词数组中创建段落
- JavaScript-从对象数组中输出随机OBJECT
- 数组中的随机文本字符串
- Javascript从数组中随机选择并按字母顺序排列
- 如何在数组javascript中选择伪随机值
- 从数组中随机抽取的最佳方式
- 在两个位置显示数组中的随机单词
- 从数组中随机采样子集
- Javascript - 如何按顺序从数组中挑选随机元素
- Javascript 数组随机丢失一个元素
- Javascript从数组中选择一个随机对象集
- 如何从包含1000个项目的数组中随机选择一个项目
- 从数组中随机选择项,仅在以前未使用过时使用
- 选择数组的随机元素来设置Youtube视频ID API
- 如何从字符串数组中获得8个随机唯一元素
- 在Javascript中从数组中挑选一个随机变量
- 尝试使用Javascript在数组中创建一个带有随机选择页面的链接
- Javascript:创建一个随机数学方程数组作为对象,20次
- 从Javascript记录数组中选择随机项,并将其转换为数组