在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

我对编写Javascript还不熟悉。我正试图洗牌名单上的名字输入一个文本区。用户选择所需的组数,并在单击时洗牌,然后显示分割的组作为输出结果。下面是我的代码,但它不是工作,因为它应该是,请帮助

<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');
}