gpt4 book ai didi

javascript - 迭代 coffeescript 中的字符串而无需创建数组

转载 作者:数据小太阳 更新时间:2023-10-29 04:24:49 26 4
gpt4 key购买 nike

我的代码中有几个地方需要遍历字符串并逐个字符地执行操作。我的 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/

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