我想获得今年的最后两个字符。例如输入= 2016 然后输出= 16
var year = 2016;
两种方法:
- 使用模数:
year%100
- 使用子字符串:
year.toString().substring(2,4)
就内存和计算成本而言,哪一种是最好的使用方法?
最佳答案
这可能取决于 ECMAScript 引擎,但这是我根据 JavaScriptCore (JSC)(WebKit 的 JavaScript 实现)中的实现进行的猜测。以下时间复杂度完全是我的猜测......
substring()
方法的时间复杂度似乎为 0(n),因为我相信它根据 start
和 end 循环遍历字符
参数。
取模方法的时间复杂度很可能为 0(n/m),其中 n
是被除数,m
是用于除的数。将大数除以小数将需要更多迭代。对于某些情况可能会有一些优化,例如除以 0、1 等。
在这种特殊情况下,使用 toString() 将年份转换为字符串的要求很可能会使取模方法的性能稍微提高一些。任何 yield 都可能很小且无法察觉。
但是,还有一个更重要的因素需要考虑。在特殊情况下,取模方法可能会导致问题。例如,2000 年的结果将为 0。
> 2000%100
< 0
这可能会导致您的脚本出现问题。
最后,substring()
方法是更安全、性能几乎相同的解决方案。
关于javascript - 在 javascript 中使用模数和子字符串的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34966448/