使用范围将Coffeescript循环转换为ES6

时间:2016-09-30 11:17:17

标签: javascript arrays coffeescript ecmascript-6

免责声明:我不知道Coffeescript,虽然我很感激它为ES6规范做出了贡献,但我迫不及待地想看看它的背后。

这个Coffeescript循环(由其他人写)

if @props.total>1
  for page in [1..@props.total]
    active = (page is +@props.current)
根据{{​​3}},

等同于这个JS

var active, i, page, ref;

if (this.props.total > 1) {
  for (page = i = 1, ref = this.props.total; 1 <= ref ? i <= ref : i >= ref; page = 1 <= ref ? ++i : --i) {
    active = page === +this.props.current;
  }
}

现在我想使用for..of循环缩短JS,但我无法弄清楚如何。

我试图实现js2coffee(底部的生成器功能位),但我无法做到正确。

我的问题是:有没有办法在ES6中制作音域?

2 个答案:

答案 0 :(得分:1)

您正在寻找的生成器解决方案

D1

答案 1 :(得分:0)

要在JavaScript中从k开始生成长度为n的任何范围的连续整数,以下内容应该有效:

Array.apply(null, Array(k)).map((x, i) => i + n);

虽然完全与coffeescript范围功能相同,但它可能足够接近大多数用途。尽管明显更加冗长有一个明显的优势:你不必记住.....中的哪一个是独占的,哪个是包容性的。