Изменение функции для работы с отрицательными значениями? - PullRequest
1 голос
/ 29 января 2020

В моем приложении есть функция, которая принимает значение и выводит его особым образом. Он предназначен для вычисления значения, которое будет таким же, но разделено на «часы: минуты».

Мне нужна функция, которая также работает для отрицательных значений - что-то вроде проверки if внутри функции, чтобы проверить, является ли введенное время является отрицательным, а затем изменить расчет / вывод.

Вот функция, это довольно просто:

   const calcSingle = time => {        
      // insert a if check somewhere here to check for time and if its negative
      let hour = Math.floor(time / 60);
      let minutes = time % 60;

      hour = hour < 10 ? "0" + hour : hour;
      minutes = minutes < 10 ? "0" + minutes : minutes;

      return hour + ":" + minutes;
  };

Если я вызову это, например:

calcSingle(200) Я получаю «03:20», которое является правильным значением.

Однако, если я пытаюсь calcSingle(-200), я получаю: «0-4: 0-20», что, очевидно, неправильно, потому что это должно будет то же значение, но с минусом, так что это => "-03: 20".

const calcSingle = time => {
  // insert a if check somewhere here to check for time and if its negative
  let hour = Math.floor(time / 60);
  let minutes = time % 60;

  hour = hour < 10 ? "0" + hour : hour;
  minutes = minutes < 10 ? "0" + minutes : minutes;

  return hour + ":" + minutes;
};
console.log(
  calcSingle(200)
)


console.log(
  calcSingle(-200)
)

Редактировать: Спасибо за все ответы от всех вас, ребята, я буду использовать math.abs, это решает мою проблему! Отличная помощь, ребята - хорошего дня!

Ответы [ 6 ]

3 голосов
/ 29 января 2020

Вы можете добавить проверку в начале и вызвать один и тот же знак изменения функции.

  if (time < 0) {
    return `-${calcSingle(Math.abs(time))}`;
  }

Как это

const calcSingle = time => {
  if (time < 0) {
    return `-${calcSingle(Math.abs(time))}`;
  }

  // insert a if check somewhere here to check for time and if its negative
  let hour = Math.floor(time / 60);
  let minutes = time % 60;

  hour = hour < 10 ? "0" + hour : hour;
  minutes = minutes < 10 ? "0" + minutes : minutes;

  return hour + ":" + minutes;
};

console.log(calcSingle(200));
console.log(calcSingle(-200));
2 голосов
/ 29 января 2020

Я думаю Math.abs() решит вашу проблему:

const calcSingle = time => {     
  let isNegative = time < 0;
  let _time = Math.abs(time);
  // insert a if check somewhere here to check for time and if its negative
  let hour = Math.floor(_time / 60);
  let minutes = _time % 60;

  hour = hour < 10 ? "0" + hour : hour;
  minutes = minutes < 10 ? "0" + minutes : minutes;

  return (isNegative ? '-':'') + hour + ":" + minutes;
};


console.log(
  calcSingle(200)
)


console.log(
  calcSingle(-200)
)
1 голос
/ 29 января 2020

Простейшая версия

const pad = num => ("0" + num).slice(-2);
const calcSingle = time => {
  let _time = Math.abs(time);
  let hour = pad(Math.floor(_time / 60));
  let minutes = pad(_time % 60);
  return (time < 0 ? '-' : '') + hour + ":" + minutes;
};

console.log(
  calcSingle(200)
)
console.log(
  calcSingle(-200)
)
0 голосов
/ 29 января 2020

Вы можете использовать Math.abs(), чтобы получить абсолютное значение time. Затем вы можете проверить в своем заявлении на возврат, является ли ваше начальное время меньше 0 (следовательно, отрицательным числом), и использовать его для возврата положительного или отрицательного времени.

Вы можете использовать следующий код:

const calcSingle = time => {
  const absTime = Math.abs(time);
  let hour = Math.floor(absTime / 60);
  let minutes = absTime % 60;

  hour = hour < 10 ? "0" + hour : hour;
  minutes = minutes < 10 ? "0" + minutes : minutes;

  return `${time < 0 ? "-" : ""}${hour}:${minutes}`;
};
0 голосов
/ 29 января 2020

Math.abs можно использовать. Math.abs ()

const calcSingle = time => {
  // insert a if check somewhere here to check for time and if its negative
  let _time = Math.abs(time);
  let hour = Math.floor(_time / 60);
  let minutes = _time % 60;

  hour = hour < 10 ? "0" + hour : hour;
  minutes = minutes < 10 ? "0" + minutes : minutes;
  return (time < 0 ? '-' : '') + hour + ":" + minutes;
};
console.log(calcSingle(200), calcSingle(-200));
0 голосов
/ 29 января 2020

Используйте логическое значение, чтобы сохранить значение и добавить минус в конце результата

calcSingle = time => {
  var bIsNegative = false;
  if (time < 0) {
    bIsNegative = true;
  }
  time = Math.abs(time);
  // insert a if check somewhere here to check for time and if its negative
  let hour = Math.floor(time / 60);
  let minutes = time % 60;

  hour = hour < 10 ? "0" + hour : hour;
  minutes = minutes < 10 ? "0" + minutes : minutes;

  return bIsNegative ? "-" + (hour + ":" + minutes) : hour + ":" + minutes;
};
console.log(
  calcSingle(200)
)
console.log(
  calcSingle(-200)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...