通过循环将值分配给数组索引

问题描述 投票:1回答:2

我苦苦寻找的应用循环功能到一个数组,我希望你能帮助我。我有一组名单,我想要将人请求组,并指定这些的地方有空位的地方。 因此,即时寻找在一个表,我会得到: 第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");}

你能帮助我吗?

非常感谢马里昂

javascript arrays loops for-loop
2个回答
0
投票

如果我理解正确的话,你需要做的是:

  • 一些空的组,添加人,当谁可以长的名单开始,但从来没有长出10个成员
  • 根据要求(按下按钮),添加的人任意数量的第一组,可以采取一切要求各成员
  • 如果没有组可以采取所有请求的成员,添加一个新的组,并添加请求发送到。

假设这一点,easiset的方法是不使用多维阵列(“与两列阵列):

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");
}
© www.soinside.com 2019 - 2024. All rights reserved.