Присвойте значение индексам массива через цикл - PullRequest
0 голосов
/ 03 февраля 2019

Я изо всех сил пытаюсь найти применение функции цикла к массиву, и я надеялся, что вы мне поможете.У меня есть список групп, и я хочу автоматически назначать запросы людей группам и назначать их областям, где есть вакансии.
Поэтому я смотрю на таблицу, где я получу:
Группа 1 |NB People
Группа 2 |NB People
Группа 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");}

МожетВы помогаете мне, пожалуйста?

Большое спасибо Марион

1 Ответ

0 голосов
/ 03 февраля 2019

Если я вас правильно понимаю, то вы хотите:

  • начать со списка некоторых пустых групп, которые могут расти при добавлении людей, но никогда не превышать 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");
}

Если вы хотите, чтобы это имя группы / aмногомерный массив, вы можете сделать это следующим образом:

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");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...