【发布时间】:2015-08-21 00:46:20
【问题描述】:
好的,所以我的代码中有这个非常糟糕的 while 循环。我正在尝试重构它以使用 Underscore.js 或 js 中的 .map 函数,但我一直卡住。这是我所拥有的工作代码:
createGroupedChannels = (array) ->
groups = []
i = 0
column = 0
while i < array.length
if groups.length <= 2
groups.push [array[i]]
i += 1
else
groups[column].push array[i]
column += 1
i += 1
if column is 3
column = 0
groups.reverse()
重点是将数组分成3组,保持初始的相对顺序。我尝试了几种尝试使用下划线的配置均无济于事。我对 JS 相当陌生,非常感谢任何帮助。
我目前使用 .map 的内容根本不起作用,但我正在根据请求添加它:
createGroupedChannels = (array) ->
_.map array, () ->
i = 0
column = 0
groups = []
if groups.length <= 2
groups.push [array[i]]
else
groups[column].push array[i]
i += 1
column += 1
column = 0 if column is 3
groups.reverse()
【问题讨论】:
-
你能告诉我们你用
.map尝试的代码吗? -
尽管有点尴尬,但我编辑展示了我尝试过的内容
-
这条线看起来很可疑:
column = 0 if column is 3。您也可以使用column = column + 1 % 3并避免使用if。 -
应该提到这是咖啡脚本,所以我认为这是有效的语法。
-
我也很怀疑。对我来说看起来不错。也许您可以从输出中收集错误所在的位置?
标签: javascript jquery coffeescript underscore.js