如何将英制转换为公制?

问题描述 投票:0回答:1

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

比方说,我有一个数据对象,该对象具有数量,度量和类型,例如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

但是,如何在代码中应用英制和公制单位,如何将其添加到转换函数中?

javascript reactjs math units-of-measurement
1个回答
0
投票

您可以具有一个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);
© www.soinside.com 2019 - 2024. All rights reserved.