Есть ли простой способ объединить операторы if в функцию для проверки аргументов? - PullRequest
2 голосов
/ 30 мая 2020

У меня есть оператор switch для обработки команд, и он работает как задумано. Однако у меня также есть масса команд / кейсов. Проверка ошибок заключается в том, чтобы убедиться, что программа не обнаружит sh, если они напечатают что-то, кроме числа. Есть ли способ как-то сжать эти if statements в function?

case "test":
        if (typeof args[1] === 'string') 
        {
            args[1] = parseInt(args[1])
            Functions.packs = args[1];
        }
        else if(Number.isNaN(+args[1]))
        {
            message.reply("The command was invalid.");
            break;
        }
        else
        {
            message.reply("The command was invalid.");
            break;
        }

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

1 Ответ

1 голос
/ 30 мая 2020

Я бы попытался использовать .toString (), чтобы заставить все быть строкой, а затем parseInt () результат. Позволяет просто проверить на NaN ...

var numberTest = function(testArg){
  var testString = testArg.toString();
  var testNumber = parseInt(testString);
  var returnObj = {
    number: testNumber,
    valid: Number.isNaN(testNumber)
  };
  return returnObj;
}

case "test":
  var argTest = numberTest(args[1]);
  if(argTest.valid){
    Functions.packs = argTest.number;
  }
  else{
    message.reply("The command was invalid.");
  }
  break;
...