如何将英制单位转换为公制单位?

How to convert imperial to metric units?

这更像是一个关于代码和数学的一般问题。我一点也不擅长数学,我还在学习如何在编程中应用数学。

比方说,我有一个包含数量、度量和类型的数据对象,例如 feetlb

const data = {
  0: {
    'type': 'imperial',
    'unit': 'ft',
    'amount': 3 
  },
  1: {
    'type': 'imperial',
    'unit': 'lb',
    'amount': 5
  },
  2: {
    'type': 'imperial',
    'unit': 'mph',
    'amount': 7 
  }
}

我需要遍历这些数据并根据类型转换每个数据(假设类型就是它的名称)

Object.keys(data).map(key => {
    convert(data[key]['amount'], data[key]['type'], data[key]['unit'])
})

函数将其转换为:

const convert = (amount, type, unit) => {
   const calc = // ???
   return calc;
}

我的问题是,如何根据测量类型进行转换?我知道 1 英尺等于 0.3048 米,如果我需要将 5 英尺换算成米,我会 5*0.3048.

但是,我如何在代码中应用它,以及英制和公制单位列表,以及如何将它添加到转换函数中?

您可以拥有一个 converter 对象,其中包含要转换的函数和要显示的标签,这是一个示例(根据您的需要调整值和单位):

const data = {
  0: {
    type: "imperial",
    unit: "ft",
    amount: 3
  },
  1: {
    type: "imperial",
    unit: "lb",
    amount: 5
  },
  2: {
    type: "imperial",
    unit: "mph",
    amount: 7
  }
};

const converter = {
  imperialToMetric: {
    ft: val => val * 0.3048,
    lb: val => val * 0.453592,
    mph: val => val * 1.60934,
    labels: {
      ft: "meters",
      lb: "Kg",
      mph: "kmh"
    }
  },
  metric: {
    // reverse the above
  }
};

const result = Object.values(data).map(({ amount, type, unit }) => ({
  amount: converter.imperialToMetric[unit](amount),
  unit: converter.imperialToMetric.labels[unit],
  type: "metric"
}));

console.log(result);