有效地将单位从一种系统转换为另一种系统
Efficient way to convert units from one system to another
我很难找到一种有效的方法来将不同类型的单位转换为各种其他类型。
切换情况会起作用,但在我看来,这不是一个有效的方法,因为我将有3个不同的系统(SI, Imperial和US)。我的转换器(在我的应用程序内)将始终转换从SI到某物或从某物到SI。它降低了复杂性,但我仍然需要关于如何编写干净代码的建议。
我已经定义了转换的输入参数是Value(数字)和Unit(字符串)。
我有两个函数。SIToSomething(value, unit)和SOmethingToSi(value, unit).
单位是定义的,因为我将转换长度,重量,数量等。
你有什么建议?
这个怎么样:
var converters = {
'SIToImperial' : {
'cm' : function(val) {
// implementation, return something
},
'kg' : function(val) {
// implementation, return something
} //, etc.
},
'SIToUS' : {
'cm' : function(val) {
// implementation, return something
},
'kg' : function(val) {
// implementation, return something
} //, etc.
},
'USToSI' : {
'cm' : function(val) { /* ... */ } // etc
} // , etc
}
SIToSomething(value, unit, system) {
return converters["SITo" + system][unit](value);
}
var meterInImperial = SIToSomething(100, 'cm', 'Imperial');
var fiftyKilosInUS = SIToSomething(50, 'kg', 'US');
您可以做的是有一个基本单位,并为每个目标单位定义与该基本单位之间的转换函数。然后,要将A转换为B,例如,您可以这样做:
A -> base -> B
这样,每个单位(不包括基本单位)只需要两个转换函数:
var units = {
a: {
toBase: function(value) { return value * 2; },
fromBase: function(value) { return value / 2; }
},
b: {
toBase: function(value) { return 1.734 * value + 48; },
fromBase: function(value) { return (value / 1.734) - 48; }
}
}
function convertFromTo(unitA, unitB, value) {
return unitB.fromBase(unitA.toBase(value));
}
convertFromTo(units.a, units.b, 36489);
完成与SI之间的所有转换。例如,如果转换为Imperial->US,您将执行Imperial->SI->US。
这是您可以投入的最小努力。
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 有没有一种方法可以仅使用HTML/CSS来隐藏基于特定值的数据单元格
- 有没有一种方法可以从URL跟踪请求的域
- 有没有一种方法可以列出Ember.Object的所有绑定
- 有没有一种方法可以获得three.js的最小/lite版本
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- ES6是否引入了一种机制来生成块范围的函数语句(而不是表达式)
- 有没有一种方法可以从Javascript检测特定的应用程序是否安装在(AndroidiOS)设备上
- 只能存储一种类型的对象的数组
- 在HTML/JavaScript中,有没有一种方法可以在图像开始加载时知道图像的最终布局尺寸
- 有没有一种方法可以在Javascript中进行可变递归currying
- 有没有一种方法可以检测ios<>使用jquery和触发器操作形成导航按钮
- 需要一种方法来系统地处理NodeJS项目中的错误/异常/拒绝
- 有没有一种方法可以用html和javascript或jQuery创建登录系统
- 有效地将单位从一种系统转换为另一种系统