Сравнение двузначных значений в массиве

Я пишу свой первый код 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 работает правильно:

Si по праву получает победу

При 10-2 (или 10-3) результат меняется на противоположный, и игрок с меньшим счетом считается победителем!?

Ste ошибочно получает победу!

Как будто сравнение работает только с первой цифрой счета. Как это исправить?


person gdh48k    schedule 27.08.2019    source источник
comment
Я не вижу в вашем коде, где вы присваиваете значения Results[i][1] и Results[i][2], но я предполагаю, что это строки, а строки не сравниваются так же, как числа. Поэтому либо убедитесь, что вы храните числовые типы данных в этих индексах массива, либо убедитесь, что все условия if сначала преобразуют строку в число с унарным плюсом, как вы делали в некоторых назначениях. Это вполне может быть дубликатом проблемы со сравнением двух чисел в javascript   -  person trincot    schedule 27.08.2019
comment
Привет, не могли бы вы уточнить, что вы пытаетесь сделать здесь: goalsF=+goalsF + +Results[i][1];, а также как вам нужно сравнивать значения результатов/что означают эти значения   -  person Marc Sloth Eastman    schedule 27.08.2019
comment
Спасибо @trincot. Значения присваиваются массиву Results через html-таблицу, которая собирает пользовательский ввод. Учитывая это, как мне хранить в массиве только числовые типы данных?   -  person gdh48k    schedule 28.08.2019
comment
Спасибо, @Marc Sloth Eastman. goalsF=+goalsF + +Results[i] подсчитываются все голы (или забитые) игроком. Таким образом, он берет голы, забитые в текущем результате, и добавляет их к общему количеству. Это для целей A (голы против). Это используется для расчета разницы мячей и последующей сортировки рейтинговой таблицы. И, наконец, причина, по которой я сравниваю значения результатов, заключается в том, чтобы увидеть, какой игрок является победителем, т.е. игрок с большим количеством голов выигрывает матч, игрок с наименьшим - проигравшим, и если они равны, это, конечно, ничья. .   -  person gdh48k    schedule 28.08.2019
comment
@ gdh48k Извините, я не вижу номера целей. И я не понимаю, почему вы так много конвертируете строку в число. Можете ли вы объяснить массив результатов и что означают все элементы в подмассивах?   -  person Marc Sloth Eastman    schedule 28.08.2019