17 javascript
我的代码是:
var level = function (d) {
if (value(d) > median + stdev) {
return 1;
} else if (value(d) > median) {
return 2;
} else if (value(d) > median - stdev) {
return 3;
} else {
return 4;
}
};
Run Code Online (Sandbox Code Playgroud)
这样做有更好的方法吗?
650*_*502 15
当然,value(d)多次调用是可以避免的.
您也可以使用对称性缩短一点:
var level = function (d) {
//
// -std median +std
// ----------------|-------|-------|------------------
// 4444444444444444 3333333 2222222 111111111111111111
//
var i = Math.floor((median - value(d)) / stddev) + 3;
return Math.max(1, Math.min(4, i));
};
Run Code Online (Sandbox Code Playgroud)
对于一个真正的项目可能不是一个好主意但是...我没有测试但是我发现这个代码比你问题中的原始代码慢得多并且我发现它更难维护也不会感到惊讶.
请注意,不包括一次性一次性脚本,通常代码会被写入一次并读取很多次(用于维护,如改进或调试),因此"更容易阅读"通常比"更容易编写"更重要.
当更短的意思是"更容易阅读"是一件好事,当它开始意味着"更难阅读"时它不是.
要完成设置,这是switch@austin引用的方式:
var level = function (d) {
var d = value(d) - median;
switch (true) {
case d > stdev : return 1;
case d > 0: return 2;
case d > -stdev: return 3;
default: return 4;
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
715 次 |
| 最近记录: |