这更多是关于代码和数学的一般问题。我一点也不擅长数学,但我仍在学习如何在编程中应用数学。
比方说,我有一个数据对象,该对象具有数量,度量和类型,例如feet
或lb
。
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);