【问题标题】:How to convert JavaScript to CoffeeScript for two case如何在两种情况下将 JavaScript 转换为 CoffeeScript
【发布时间】:2012-01-17 10:43:08
【问题描述】:

我在 Rails 应用程序中使用 CoffeeScript。两种情况下如何将 JavaScript 转换为 CoffeeScript:

var colIndex = 0,
    colRight = 0,
    cols = this.grid.columnX,
    len = cols.length,
    cmatch = false;

for (len; colIndex < len; colIndex++) {
    colRight = cols[colIndex].x + cols[colIndex].w;
    if (xy[0] < colRight) {
        cmatch = true;
    break;
    }
}

setTimeout(function() {
    d.scrollTop = st;
}, 10);

提前感谢您的帮助!

【问题讨论】:

标签: javascript for-loop coffeescript settimeout


【解决方案1】:

1.CoffeeScript 支持数组上的for in 迭代,因此您根本不需要colIndexlen

colRight = 0
cols = @grid.columnX
cmatch = false

for col in cols
  colRight = col.x + col.w
  if xy[0] < colRight
    cmatch = true
    break

2.

setTimeout (-> d.scrollTop = st), 10

【讨论】:

  • setTimeout 看起来不错,但您可能会忽略 OP 实际上可能想要拥有匹配项的索引。请参阅我的答案以获取提供该解决方案的解决方案。
【解决方案2】:

有一个网站可以做这项工作js2coffee:

答案是:

1

colIndex = 0
colRight = 0
cols = @grid.columnX
len = cols.length
cmatch = false
len
while colIndex < len
  colRight = cols[colIndex].x + cols[colIndex].w
  if xy[0] < colRight
    cmatch = true
    break
  colIndex++

2

setTimeout (->
  d.scrollTop = st
), 10

【讨论】:

    【解决方案3】:

    这是我的尝试:

    for col, idx in @grid.columnX when xy[0] < colRight = (col.x + col.w)
      cmatch = idx
      break
    

    所以在循环之后,cmatch 要么是未定义的要么是匹配的索引,而 colRight 将是匹配 col 的右侧,或者如果没有找到匹配项,则为最后一个 col 的右侧。

    这是一个可以玩的小提琴:http://jsfiddle.net/fNSXE/1/

    【讨论】:

      猜你喜欢
      • 2015-11-10
      • 1970-01-01
      • 2022-08-11
      • 1970-01-01
      • 2014-05-19
      • 1970-01-01
      • 2011-11-12
      • 2016-11-26
      • 2014-12-13
      相关资源
      最近更新 更多