作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我的代码中有几个地方需要遍历字符串并逐个字符地执行操作。我的 node.js 应用程序需要为每个请求执行数十次此操作,而且字符串的长度通常可能相当长。
我见过将如下所示的 javascript 转换为 coffeescript 的唯一方法是根据字符串的长度创建一个数组。我遇到的问题是它在硬件方面是一件额外的事情,占用额外的内存,而且似乎没有必要(我的节点应用程序处理 dgrams - 每秒高达数千 - 所以所有这些额外的工作加起来)。
JavaScript 方式:
for(var i = 0; i < str.length; i++) { /* Do stuff with str here */ }
建议的 CoffeeScript 方式
for i in [0..str.length]
# Do stuff here
再次强调,从硬件的 Angular 来看,当传统的 for 循环不必干扰该步骤时,我认为强制创建数组对象是愚蠢的。
我发现的唯一解决方法是使用 while 循环,例如:
i = 0
while i < str.length
# Do stuff
i++
虽然这可行,但比仅使用简单 for 循环的直接 JavaScript 方法要冗长得多。
有没有一种方法可以在 CoffeeScript 中使用 for 循环而不必生成多余的数组来执行基本迭代?
最佳答案
如果不需要,它实际上不会创建数组。查看编译后的JS。这个 CoffeeScript:
str = "hello"
for i in [0..(str.length-1)]
alert(i)
生成以下 JavaScript:
var i, str, _i, _ref;
str = "hello";
for (i = _i = 0, _ref = str.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {
alert(i);
}
实际上没有创建数组。
(将 .length 减去 1 以避免未定义)
关于javascript - 迭代 coffeescript 中的字符串而无需创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13726237/
我是一名优秀的程序员,十分优秀!