Циклы for и операторы if на листах с перекрестными ссылками - PullRequest
1 голос
/ 06 апреля 2019

У меня есть 5 листов - 1 основной лист и 4 листа для данных. 4 листа содержат столбцы W и L, а основной лист имеет 8 ячеек, чтобы отслеживать их - одна ячейка для каждого # W и # L. Я пытаюсь сделать это с помощью следующего сценария, а затем вызываю методы в соответствующих ячейках основного листа.

function totalWins(data) {
  var win = 0;
  for(var i = 0; i < data.length; i = + 1) {
    if(data[i][0] = "W") {
      win = win + 1;
    }
  }
  return win;
}

function totalLosses(data) {
  var loss = 0;
  for(var i = 0; i < data.length; i = + 1) {
    if(data[i][0] = "L") {
      loss = loss + 1;
    }
  }
  return loss;
}

Я получаю ошибку Internal error executing the custom function., которая означает, что для выполнения кода требуется более 30 секунд, чтобы пройти через столбец (n = 100) на одном из четырех листов. Я действительно не могу понять, почему он это делает. Любая помощь приветствуется!

Ответы [ 3 ]

1 голос
/ 06 апреля 2019

Вы поместили + в неправильном месте в вашем коде

for (var i = 0; i < data.length; i = + 1) {
//                                   ^
                                     |____ This makes acts as `+` sign

Таким образом, в этом случае вы фактически не увеличиваете свой индекс, поэтому вы продолжаете цикл

и переходите к этому

for (var i = 0; i < data.length; i += 1) {
//                                 ^
                                   |_____  This acts as `addition`

Или просто используйте i++

1 голос
/ 06 апреля 2019

Вам нужно увеличить i.Без этого вы присваиваете +1 для i, и цикл принимает только первые два значения и зацикливается навсегда с i === 1.

for (var i = 0; i < data.length; i = i + 1) {
//                                   ^

или немного короче

for (var i = 0; i < data.length; ++i) {

Как уже упоминалось в комментариях TheWizEd , вы присваиваете значение в операторе if, где вы должны сравнить значение

if (data[i][0] === "W") {
//             ^^         strict comparison
0 голосов
/ 06 апреля 2019

Исправлено это путем изменения счетчиков win = win + 1 и loss = loss + 1 на win +=1 и loss +=1. Также с вышеуказанными приращениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...