在javascript中创建包含随机名称的组
我对编写Javascript还不熟悉。我正试图洗牌名单上的名字输入一个文本区。用户选择所需的组数,并在单击时洗牌,然后显示分割的组作为输出结果。下面是我的代码,但它不是工作,因为它应该是,请帮助在javascript中创建包含随机名称的组,javascript,arrays,list,shuffle,Javascript,Arrays,List,Shuffle,我对编写Javascript还不熟悉。我正试图洗牌名单上的名字输入一个文本区。用户选择所需的组数,并在单击时洗牌,然后显示分割的组作为输出结果。下面是我的代码,但它不是工作,因为它应该是,请帮助 <script> function ArrayToGroups(source, groups){ var groupList = []; groupSize = Math.ceil(source.length/groups); v
<script>
function ArrayToGroups(source, groups){
var groupList = [];
groupSize = Math.ceil(source.length/groups);
var queue = source;
for(var r = 0; r < groups; r++){
groupList.push(queue.splice(0,groupSize));
}
return groupList;
}
function textSpliter(splitText){
var textInput = document.getElementById("inputText").value;
var splitText = textInput.split(',');
var newList = [];
for(x = 0; x <= splitText.length; x++) {
var random = Math.floor(Math.random() * splitText.length);
var p = splitText[random];
newList.push(p);
splitText.splice(p,groupList);
}
for(var i = 0; i < newList.length; i++){
var s = newList[i];
document.getElementById('resInput').value += s + "\n" ;
}
return splitText;
}
</script>
Below is my input and output textareas
</head>
<body>
<form>
<textarea id="inputText" placeholder="text" rows="10" cols="40"></textarea>
<input type="number" name="number" max="6" value="1" id="groupNumber">
<textarea id="resInput" placeholder="text" rows="10" cols="40"></textarea>
<input type="button" name="Shuffle" value="shuffle" onclick="textSpliter()">
</form>
</body>
</html>
函数ArrayToGroups(源,组){
var-groupList=[];
groupSize=Math.ceil(source.length/groups);
var队列=源;
对于(var r=0;rfunction shuffle(){
//获取列表
//示例:元素1、元素2、元素3。。。
var list=document.getElementById(“inputText”).value.replace(/\s*,\s*/g,“,”).split(“,”);
//获取组数
var n=parseInt(document.getElementById(“groupNumber”).value);
//计算每组的元素数
var m=数学楼层(列表长度/n);
//足够的元素
if(n*m==list.length){
//创建组
变量组=新数组();
对于(i=0;i
我重写了你的代码。这很简单
函数textSpliter(){
var input=document.getElementById(“inputText”).value;
var name=input.split(“,”);
var groupSize=document.getElementById(“groupNumber”).value;
var groupCount=Math.ceil(names.length/groupSize);
var组=[];
对于(变量i=0;i
ES6版本;-)
我编辑了代码,所以我的html代码和我的输入、输出以及洗牌按钮也在那里。用你的代码做一个标记。给出一个示例输入,如“Josh,Adam,Chris…”和示例输出(你想如何对它们进行分组,最终结果).我的输出应该是这样的:'组1-托马斯,琳达,乔纳组2-安德烈亚斯,本杰明,罗宾'这些名字被输入到一个文本区域。用户选择他想要的组数,然后javascript将把这些名字洗牌并排序到组中,然后结果将显示在第二个文本区域,ID重新输入。
function shuffle() {
// Get list
// Example: element1, element 2, ele ment 3, ...
var list = document.getElementById("inputText").value.replace(/\s*,\s*/g, ",").split(",");
// Get number of groups
var n = parseInt(document.getElementById("groupNumber").value);
// Calculate number of elements per group
var m = Math.floor(list.length / n);
// Enought elements
if (n * m == list.length) {
// Create groups
var groups = new Array();
for (i = 0; i < n; i++) {
groups[i] = new Array();
for (j = 0; j < m; j++) {
// Random
rand = Math.floor(Math.random() * list.length);
// Add element to group
groups[i][j] = list[rand];
// Remove element to list
list.splice(rand, 1);
}
}
// Output
var text = "";
for (i = 0; i < n; i++) {
text += "Group " + (i + 1) + ": ";
for (j = 0; j < m; j++) {
if (j != 0) { text += ", "; }
text += groups[i][j];
}
text += "\n";
}
document.getElementById("resInput").value = text;
} else {
alert("Add more elements");
}
}
function textSpliter() {
var input = document.getElementById("inputText").value;
var names = input.split(",");
var groupSize = document.getElementById("groupNumber").value;
var groupCount = Math.ceil(names.length / groupSize);
var groups = [];
for (var i = 0; i < groupCount; i++) {
var group = [];
for (var j = 0; j < groupSize; j++) {
var random = Math.floor(Math.random() * names.length);
var name = names[random];
if (name != undefined) {
group.push(name);
names.splice(names.indexOf(name), 1);
}
}
group.sort();
groups.push(group);
}
printGroups(groups);
}
function printGroups(group) {
var output = document.getElementById("resInput");
output.value = "";
for (var i = 0; i < group.length; i++) {
var currentGroup = "";
for (var j = 0; j < group[i].length; j++) {
currentGroup = group[i].join(",");
}
output.value += currentGroup + "\r";
}
}
function textSpliter() {
var input = document.getElementById("inputText").value;
var names = input.replace(/\s*,\s*|\n/g, ",").split(",");
var groupSize = document.getElementById("groupNumber").value;
var groupCount = Math.ceil(names.length / groupSize);
var groups = [...Array(groupCount)].map(() => Array());
var i = 0
while (names.length > 0) {
var m = Math.floor(Math.random() * names.length);
groups[i].push(names[m]);
names.splice(m, 1);
i = (i >= groupCount - 1) ? 0 : i + 1
}
printGroups(groups);
}
function printGroups(groups) {
var output = document.getElementById("resInput");
output.value = groups.map(group => group.join(',')).join('\r');
}