Я пишу свой первый код javascript/html для сбора футбольных результатов, а затем создаю таблицу рейтингов. Мой код отлично справляется с однозначными оценками, но не с двузначными.
Для результатов, лиг и игроков используются три массива, как показано ниже:
Results=[];
var Results=[
["Home","F","A","Away"],
["Si",,,"Ste"],
["Si",,,"Gaz"],
["Ste",,,"Gaz"],
["Ste",,,"Si"],
["Gaz",,,"Si"],
["Gaz",,,"Ste"],
["Si",,,"Ste"],
["Si",,,"Gaz"],
["Ste",,,"Gaz"],
["Ste",,,"Si"],
["Gaz",,,"Si"],
["Gaz",,,"Ste"],
];
League=[];
var League=[
["Team","P","W","D","L","F","A","GD","Pts"],
["Si",,,,,,,,],
["Ste",,,,,,,,],
["Gaz",,,,,,,,]
];
players=[];
var players=["Si","Ste","Gaz"];
Я считаю, что ошибочный код заключается в том, где рассчитываются выигрыши:
if (Results[i][1]>Results[i][2])
{ wins++;
pts= +pts + 3;
}
Это взято из двух циклов for, которые перебирают массив результатов для каждого игрока и соответствующим образом заполняют массив лиги:
for (p = 0; p < players.length; p++)
{
for (i = 1; i < Results.length; i++)
{
if (Results[i][1]!= "")
{
if (Results[i][0]==players[p])
{
pld++;
goalsF=+goalsF + +Results[i][1];
goalsA=+goalsA + +Results[i][2];
gd=(goalsF - goalsA);
if (Results[i][1]>Results[i][2])
{
wins++;
pts= +pts + 3;
}
else if (Results[i][1]<Results[i][2])
{
loses++;
}
else
{
draws++;
pts++
}
}
}
if (Results[i][1]!= "")
{
if (Results[i][3]==players[p])
{
pld++;
goalsF=+goalsF + +Results[i][2];
goalsA=+goalsA + +Results[i][1];
gd=(goalsF - goalsA);
if (Results[i][1]<Results[i][2])
{
wins++;
pts= +pts + 3;
}
else if (Results[i][1]>Results[i][2])
{
loses++;
}
else
{
draws++;
pts++
}
}
}
}
r=p+1;
League[r][1]=pld;
League[r][2]=wins;
League[r][3]=draws;
League[r][4]=loses;
League[r][5]=goalsF;
League[r][6]=goalsA;
League[r][7]=gd;
League[r][8]=pts;
var pld=0;
var wins=0;
var draws=0;
var loses=0;
var goalsF=0;
var goalsA=0;
var gd=0;
var pts=0;
var r=0;
}
При счете 10-1 работает правильно:
При 10-2 (или 10-3) результат меняется на противоположный, и игрок с меньшим счетом считается победителем!?
Как будто сравнение работает только с первой цифрой счета. Как это исправить?
Results[i][1]
иResults[i][2]
, но я предполагаю, что это строки, а строки не сравниваются так же, как числа. Поэтому либо убедитесь, что вы храните числовые типы данных в этих индексах массива, либо убедитесь, что все условияif
сначала преобразуют строку в число с унарным плюсом, как вы делали в некоторых назначениях. Это вполне может быть дубликатом проблемы со сравнением двух чисел в javascript - person trincot   schedule 27.08.2019goalsF=+goalsF + +Results[i][1];
, а также как вам нужно сравнивать значения результатов/что означают эти значения - person Marc Sloth Eastman   schedule 27.08.2019Results
через html-таблицу, которая собирает пользовательский ввод. Учитывая это, как мне хранить в массиве только числовые типы данных? - person gdh48k   schedule 28.08.2019goalsF=+goalsF + +Results[i]
подсчитываются все голы (или забитые) игроком. Таким образом, он берет голы, забитые в текущем результате, и добавляет их к общему количеству. Это для целей A (голы против). Это используется для расчета разницы мячей и последующей сортировки рейтинговой таблицы. И, наконец, причина, по которой я сравниваю значения результатов, заключается в том, чтобы увидеть, какой игрок является победителем, т.е. игрок с большим количеством голов выигрывает матч, игрок с наименьшим - проигравшим, и если они равны, это, конечно, ничья. . - person gdh48k   schedule 28.08.2019