gpt4 book ai didi

javascript - 如何使这段代码更具功能性和可读性?

转载 作者:行者123 更新时间:2023-12-02 06:15:40 25 4
gpt4 key购买 nike

如何使那些 javascript 语句看起来更具可读性。可以使用功能库 ramda.js 使这段代码看起来更好吗?

var getTextSpace =  function(len)
{
var tlength;
if (len >= 1 && len <= 4) {
tlength = 10;
} else if (len === 5) {
tlength = 14;
} else if (len === 6) {
tlength = 16;
} else if (len === 7) {
tlength = 18;
} else if (len >= 8 && len <= 10) {
tlength = 20;
} else if (len === 11) {
tlength = 22;
} else if (len === 12) {
tlength = 24;
} else if (len >= 13 && len <= 15) {
tlength = 26;
} else if (len === 16) {
tlength = 28;
} else if (len >= 17 && len <= 20) {
tlength = 32;
} else if (len >= 21 && len <= 34) {
tlength = tlength * 2;
} else if (len >= 35 && len <= 80) {
tlength = Math.round((len + len / 100 * 50));
}
else {
tlength = Math.round((len + len / 100 * 30));
}
return tlength;
};

提前谢谢你。

也许可以做一些允许这样做的事情?

   value
.between(2,20).then(20)
.between(21,22).then(0)
.greater(25).then(25))
.less(30).then(function(value) {return value * 20 )})

最佳答案

Ramda 可能会有所帮助。但最主要的是以可读的方式构建你的范围。下面的代码假定输入值为整数,您不需要测试其他数字类型。那些可以完成,但是你需要比这里简单的 between 更复杂的东西。您需要多个函数或一种配置函数的方法来确定开头和结尾是否包含在内。

var getTextSpace =  (function() {
// :: (Int, Int) -> (Int -> Bool)
var between = (begin, end) => R.both(R.gte(R.__, begin), R.lt(R.__, end));
return R.cond([
[between(1, 5), R.always(10)],
[between(5, 6), R.always(14)],
[between(6, 7), R.always(16)],
[between(7, 8), R.always(18)],
[between(8, 11), R.always(20)],
[between(11, 12), R.always(22)],
[between(12, 13), R.always(24)],
[between(13, 16), R.always(26)],
[between(16, 17), R.always(28)],
[between(17, 21), R.always(32)],
[between(21, 35), R.multiply(2)], // assuming original was typo
[between(35, 80), len => Math.round(len + len / 100 * 50)],
[R.T, len => Math.round(len + len / 100 * 30)]
]);
}());

(原来的情况好像有bug:

        } else if (len >= 21 && len <= 34) {
tlength = tlength * 2;

我猜是什么意思

        } else if (len >= 21 && len <= 34) {
tlength = len * 2;

我在这里编写了等效代码。)

你可以在 Ramda REPL 上看到这个 Action .

关于javascript - 如何使这段代码更具功能性和可读性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34048043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com