首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过循环为数组索引赋值

通过循环为数组索引赋值
EN

Stack Overflow用户
提问于 2019-02-03 20:14:30
回答 1查看 82关注 0票数 1

我正在努力寻找将循环函数应用于数组的方法,希望您能帮助我。我有一个组列表,我想自动将人员请求分配到组,并将这些请求分配到有空缺的区域。

因此,我看着一张表,在那里我会得到:

组别1| NB人群

组别2| NB人群

组别3| NB人群

以此类推。

因此,我知道我需要一个" if“条件来检查人员请求与每个组中的空缺进行比较,然后如果组中的空缺高于预订请求,则分配它。

我知道如何使用array.push函数将保留变量添加到数组中,但我很难循环并将其赋给包含2列的数组……

代码语言:javascript
复制
    <label for="groups">Reservation request (1-10):</label>
    <div id="reservation">
    <input type="number" name="form" id="number" min="1" max='10'>
    <br><br>
    <button onclick="groups()">Submit</button>
    </div>



 var myArray = ["Group 1", "Group 2", "Group 3"];
 function groups(){
 form = number.value;
 if (form >=1){  
     for (var i; i<myArray.length; i++) {
         if (myArray[i] > form){
             myArray[i] = form;
             console.log(myArray);
         }
         else {alert("no");}

你能帮帮我吗?

非常感谢Marion

EN

回答 1

Stack Overflow用户

发布于 2019-02-03 22:10:19

如果我没理解错的话,你要做的是:

  • 从一些空组的列表开始,这些组可以在添加人员时增长,但永远不会超过10个成员
  • 根据请求(按下按钮)将任意数量的人添加到第一个可以包含所有请求成员的组中
  • 如果没有组可以包含所有请求的成员,请添加一个新组并将请求添加到该组。

假设这样,最简单的方法是不使用多维数组(“具有两列的数组”):

代码语言:javascript
复制
var myArray = [0,0,0];

function groups() {
    var form = document.getElementById('number').value;
    if (form >=1) {  
        for (var i; i<myArray.length; i++) {
            if (myArray[i] < 10 - form) {
                myArray[i] += form;
                return;
            }
        }
        myArray.push(form); // this will only happen if "return" up there never happened
    }
    else {alert("no");
}

如果您想要group-name /a多维数组,可以这样做:

代码语言:javascript
复制
var myArray = [['Group 0',0], ['Group 1',0], ['Group 2',0]];

function groups() {
    var form = document.getElementById('number').value;
    if (form >=1) {  
        for (var i; i<myArray.length; i++) {
            if (myArray[i][1] < 10 - form) { // myArray[i][1] is the number of reservations in group i, myArray[i][0] would be the group's name
                myArray[i][1] += form;
                return;
            }
        }
        myArray.push(['Group ' + myArray.length, form); // this will only happen if "return" up there never happened
    }
    else {alert("no");
}

为了获得更好的可读性,您可以在myArray中使用结构化对象,而不是使用更多的数组:

代码语言:javascript
复制
var myArray = [{name:'Group 0',reserved:0}, {name:'Group 1',reserved:0}, {name:'Group 2',reserved:0}];

function groups() {
    var form = document.getElementById('number').value;
    if (form >=1) {  
        for (var i; i<myArray.length; i++) {
            if (myArray[i].reserved < 10 - form) { // myArray[i].reserved is the number of reservations in group i, myArray[i].name would be the group's name
                myArray[i].reserved += form;
                return;
            }
        }
        myArray.push({name:'Group ' + myArray.length, reserved:form); // this will only happen if "return" up there never happened
    }
    else {alert("no");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54502724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档