Сравнение двух массивов целых чисел с помощью скрипта Google Apps - PullRequest
0 голосов
/ 06 мая 2019

Я новичок в скрипте приложений и кодирую средство проверки инвентаря, которое сравнивает значения в одном массиве (количества, которые у нас есть на складе) с другим массивом заданных пороговых значений, которые представляют собой случаи, когда каждый элемент инвентаря необходимо переупорядочить.

Если количество на складе (значение данного элемента в массиве 1) меньше или равно пороговому значению (значение того же элемента в массиве 2), то я сделаю это позже.сейчас я просто посылаю каждый результат сравнения в новый логический массив для тестирования.

Я знаю, что значения в каждом из моих массивов правильные и правильно проиндексированы для правильного сравнения перед отправкой в ​​эту функцию.

function compareArrays(quantitiesArray, thresholdsArray) {

  var boolArray = []; 

  quantitiesArray.forEach(function(quantity, i) {

    var threshold = thresholdsArray[i];

    if (quantity <= threshold) {
      boolArray.push('TRUE');
    }
    else {
      boolArray.push('FALSE');
    }
  })
  return boolArray;  
}

по какой-то причине, когда мой цикл forEach сравнивает значенияиз двух массивов я получаю неправильные результаты сравнения.например, в журналах будет показано сравнение между количеством = 9000 и порогом = 11000, и будет показано FALSE, что не имеет смысла.

Я также попробовал простой цикл for, и он выплевывал те же самые неверные значения true / false.я использовал кучу разных проверок Logger.log в каждой точке, чтобы убедиться, что сравниваются правильные значения из каждого массива, и все проверяется.

1 Ответ

0 голосов
/ 06 мая 2019

переменные, определяемые var, по умолчанию являются строковым типом, поэтому 9000 и 11000 int в вашем коде являются типом строки, а сравнение между 9000 (строка) и 11000 (строка) равно false. Перед сравнением следует преобразовать тип в int.

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