【问题标题】:Assign value to array indexes through loop通过循环为数组索引赋值
【发布时间】:2019-06-27 09:38:20
【问题描述】:

我正在努力寻找将循环函数应用于数组,我希望你能帮助我。我有一个小组列表,我想自动将人员请求分配给小组,并将这些分配给有空缺的区域。
因此,我在看一张我会得到的桌子:
第 1 组 | NB人
第 2 组 | NB人
第 3 组 | NB人
等等……

因此,我知道我需要一个“如果”条件来检查每个组中的人员请求与空缺情况的比较,然后在组中的空缺率高于预订请求时分配它。
我知道如何使用 array.push 函数将保留变量添加到数组中,但我正在努力循环并分配给包含 2 列的数组...

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

你能帮帮我吗?

非常感谢 马里昂

【问题讨论】:

  • 感谢@NickParsons - 我已经编辑了这个!
  • 什么是number?您对术语的不明确使用使您很难猜测您想要实现的目标。
  • @connexo 你是对的,也添加了 html 部分
  • 能否请您添加更完整的代码示例,因为我们仍然不太了解,例如关于您的myArray,以便能够帮助您或了解您的要求。
  • 尝试创建一个可运行的sn-p。使用&lt;&gt;按钮。

标签: javascript arrays loops for-loop


【解决方案1】:

如果我理解正确,你想做的是:

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

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

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

如果你想要那个组名/多维数组,你可以这样做:

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 中使用结构化对象而不是更多数组:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 2016-01-17
    • 1970-01-01
    • 2021-09-15
    相关资源
    最近更新 更多