我正在努力寻找将循环函数应用于数组的方法,我希望您能为我提供帮助。我有一个组列表,我想自动将人员请求分配到组,并将这些请求分配到有空缺的区域。
因此,即时通讯正在查看我可以得到的表格:
第1组| NB People
第2组| NB People
第3组| NB People
等等...
因此,我知道我需要一个“如果”条件来检查将人员请求与每个组中的空缺进行比较,然后如果组中的空缺高于预订请求,则将其分配。
我知道如何使用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");}
能帮我吗?
非常感谢 马里恩
答案 0 :(得分:0)
如果我对您的理解正确,那么您要做的是:
假设这样,最简单的方法是不使用多维数组(“两列数组”):
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");
}
答案 1 :(得分:0)
非常感谢您@Beppo的回答!
请问“ myArray.push(['Group'+ myArray.length,form]);” -为什么要包含“ myArray.length”?我不确定我是否100%在这里使用它?
此外,如果有足够的空间,我希望它将其添加到数组的第一个索引中,如果不尝试第二个索引,等等。您的代码工作正常,但向数组中添加了一个新组。
我尝试添加此内容:
function groups(){
form = number.value;
if (form >=1){
for (var i; i<myArray.length; i++) {
if ((myArray[i] < form) && (myArray[i] <= 10) ){
myArray[i] = form;
return;
}
else {
myArry.push(['Group ' + myArray.length, form]); }
}
else { alert("Your reservation request cannot be null");}
}
但这似乎不起作用-请您告知我我做错了什么吗?
再次感谢您的帮助!