javascript - 在 javascript 中使用模数和子字符串的最佳方法

标签 javascript memory-management browser memory-efficient

我想获得今年的最后两个字符。例如输入= 2016 然后输出= 16

var year = 2016;

两种方法:

  1. 使用模数:year%100
  2. 使用子字符串:year.toString().substring(2,4)

就内存和计算成本而言,哪一种是最好的使用方法?

最佳答案

这可能取决于 ECMAScript 引擎,但这是我根据 JavaScriptCore (JSC)(WebKit 的 JavaScript 实现)中的实现进行的猜测。以下时间复杂度完全是我的猜测......

substring() 方法的时间复杂度似乎为 0(n),因为我相信它根据 startend 循环遍历字符 参数。

取模方法的时间复杂度很可能为 0(n/m),其中 n 是被除数,m 是用于除的数。将大数除以小数将需要更多迭代。对于某些情况可能会有一些优化,例如除以 0、1 等。

在这种特殊情况下,使用 toString() 将年份转换为字符串的要求很可能会使取模方法的性能稍微提高一些。任何 yield 都可能很小且无法察觉。

但是,还有一个更重要的因素需要考虑。在特殊情况下,取模方法可能会导致问题。例如,2000 年的结果将为 0。

> 2000%100
< 0

这可能会导致您的脚本出现问题。

最后,substring() 方法是更安全、性能几乎相同的解决方案。

关于javascript - 在 javascript 中使用模数和子字符串的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34966448/

相关文章:

javascript - jQuery 导航添加事件类

javascript - 在 iframe 中显示 pdf 在 iPad 中无法正常工作

javascript - Jssor - 响应 slider 的初始比例

iphone - 关于保留计数需要澄清

browser - CNAME 或别名哪个 DNS 属性更快?

ruby - 用 cookie 模拟 Ruby 中的浏览器?

javascript - 在页面加载时使用 ng-class 在 div 上设置一个类

objective-c - 旧版本 iOS 和 OS X 上的 ARC

c# - 如何以编程方式测量 azure web/worker 角色的内存使用情况?

javascript - 如何使用 Babel 在 ES6 中编写与 CommonJS、AMD 和浏览器兼容的模块?