用于循环重构的 coffeescript

标签 coffeescript

我是 coffeescript 的新手,我想知道是否有更多有经验的用户可以建议对以下代码进行重构:

splitCollection: =>
  maxLength = Math.ceil(@collection.length / 3)

  sets = Math.ceil(@collection.length / maxLength)
  start = 0    

  for x in [1..sets]   
    if x != sets
      @render new BusinessUnits(@collection.models.slice(start, (maxLength + start)))
    else
      @render new BusinessUnits(@collection.models.slice(start, (@collection.length)))
    start+= maxLength

coffeescript 中似乎没有 while 循环,这似乎暗示了一种更好的机制。

任何建议表示赞赏。

最佳答案

看起来您正在使用 Backbone.js,其中包括具有 groupBy 功能的 Underscore.js。

您可以创建一个“bucketNumber”函数:

bucketNumber = (value, index) ->
    Math.floor( index / @collection.length * 3 )

然后将您的收藏分组:

sets = @collection.groupBy bucketNumber

现在,假设有 10 个项目,sets 应该看起来像这样:

{0: [{}, {}, {}], 1: [{}, {}, {}], 2: [{}, {}, {}, {}]}

从这里开始,它变得相当简单

for bucketNumber, bucket of sets
    @render new BusinessUnits( bucket )

这是一个jsFiddle实际展示

关于用于循环重构的 coffeescript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8210198/

相关文章:

javascript - 将鼠标悬停在选择器上时,Jquery 禁用双击

javascript - CoffeeScript 中的省略号是什么意思?

javascript - 我需要一种订购对象的方法

javascript - 类型错误 : obj is undefined Coffeescript

javascript - 亚马逊 AWS 错误 : Missing credentials in config node. js

javascript - 使用 Jasmine 对 javascript/jQuery 事件进行单元测试

ruby-on-rails-3 - 将 Rails ID 传递给 Angular

regex - 空格和哈希 (#) 作为 coffeescript 正则表达式导致错误?

angularjs - 配置字段中的颜色和 logColors 有什么区别

javascript - 交换 View 的模型?