Как на лету конвертировать единицы измерений?

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

1. Конвертирование единиц длины:
Для конвертирования единиц длины, таких как метры, футы, дюймы и т.д., можно использовать следующий код:

function convertLength(value, fromUnit, toUnit) {
  const units = {
    meter: 1,
    foot: 0.3048,
    inch: 0.0254,
    // Добавьте сюда другие единицы длины, если нужно
  };

  const convertedValue = value * units[fromUnit] / units[toUnit];
  return convertedValue;
}

// Пример использования
const lengthInMeters = convertLength(5, 'foot', 'meter');
console.log(lengthInMeters); // 1.524 (примерно)

2. Конвертирование единиц массы:
Для конвертирования единиц массы, таких как граммы, килограммы, фунты и т.д., можно использовать следующий код:

function convertWeight(value, fromUnit, toUnit) {
  const units = {
    gram: 1,
    kilogram: 1000,
    pound: 453.592,
    // Добавьте сюда другие единицы массы, если нужно
  };

  const convertedValue = value * units[fromUnit] / units[toUnit];
  return convertedValue;
}

// Пример использования
const weightInKilograms = convertWeight(500, 'gram', 'kilogram');
console.log(weightInKilograms); // 0.5

3. Конвертирование единиц температуры:
Для конвертирования единиц температуры, таких как Цельсий, Фаренгейт, Кельвин и т.д., можно использовать следующий код:

function convertTemperature(value, fromUnit, toUnit) {
  // Формулы конвертирования
  const celsiusToFahrenheit = (celsius) => (celsius * 9/5) + 32;
  const celsiusToKelvin = (celsius) => celsius + 273.15;
  const fahrenheitToCelsius = (fahrenheit) => (fahrenheit - 32) * 5/9;
  const fahrenheitToKelvin = (fahrenheit) => (fahrenheit + 459.67) * 5/9;
  const kelvinToCelsius = (kelvin) => kelvin - 273.15;
  const kelvinToFahrenheit = (kelvin) => (kelvin * 9/5) - 459.67;

  let convertedValue;

  // Выбор формулы на основе переданных единиц
  if (fromUnit === 'celsius' && toUnit === 'fahrenheit') {
    convertedValue = celsiusToFahrenheit(value);
  } else if (fromUnit === 'celsius' && toUnit === 'kelvin') {
    convertedValue = celsiusToKelvin(value);
  } else if (fromUnit === 'fahrenheit' && toUnit === 'celsius') {
    convertedValue = fahrenheitToCelsius(value);
  } else if (fromUnit === 'fahrenheit' && toUnit === 'kelvin') {
    convertedValue = fahrenheitToKelvin(value);
  } else if (fromUnit === 'kelvin' && toUnit === 'celsius') {
    convertedValue = kelvinToCelsius(value);
  } else if (fromUnit === 'kelvin' && toUnit === 'fahrenheit') {
    convertedValue = kelvinToFahrenheit(value);
  } else {
    return 'Неподдерживаемые единицы температуры';
  }

  return convertedValue;
}

// Пример использования
const temperatureInFahrenheit = convertTemperature(100, 'celsius', 'fahrenheit');
console.log(temperatureInFahrenheit); // 212 (примерно)

4. Конвертирование единиц времени:
Для конвертирования единиц времени, таких как секунды, минуты, часы и т.д., можно использовать следующий код:

function convertTime(value, fromUnit, toUnit) {
  const units = {
    second: 1,
    minute: 60,
    hour: 3600,
    // Добавьте сюда другие единицы времени, если нужно
  };

  const convertedValue = value * units[fromUnit] / units[toUnit];
  return convertedValue;
}

// Пример использования
const timeInMinutes = convertTime(3600, 'second', 'minute');
console.log(timeInMinutes); // 60

Обратите внимание, что в каждой функции есть объект units, хранящий соотношения между единицами измерения. Если вы хотите добавить другие единицы измерения, вам нужно просто добавить их в этот объект с нужными значениями.