如何将 JavaScript forEach 循环/函数转换为 CoffeeScript
How do I convert a JavaScript forEach loop/function to CoffeeScript
背景:我正在尝试将一些使用带有D3.js数据可视化库的Crossfilter库的JavaScript代码转换为CoffeeScript。
将JavaScript forEach循环/函数转换为CoffeeScript的最佳方法是什么?
下面是 JavaScript 代码:
// A little coercion, since the CSV is untyped.
flights.forEach(function(d, i) {
d.index = i;
d.date = parseDate(d.date);
d.delay = +d.delay;
d.distance = +d.distance;
});
CoffeeScript 可以在循环中执行内联函数吗? 现在我想我需要将其分解为一个函数和循环:
coerce = (d) ->
d.index = 1
d.date = parseDate(d.date)
d.delay = +d.delay
d.distance = +d.distance
coerce(flights) for d in flights
使用理解
for d, i in flights
console.log d, i
上面的代码转换为
var d, i, _i, _len;
for (i = _i = 0, _len = flights.length; _i < _len; i = ++_i) {
d = flights[i];
console.log(d, i);
}
所以你可以看到d
和i
是你想要的。
转到此处并搜索"forEach"以获取一些示例。
最后,查看第一条评论以获取更多有用的信息。
直接翻译为:
flights.forEach (d, i) ->
d.index = i
d.date = parseDate(d.date)
d.delay = +d.delay
d.distance = +d.distance
或者您可以使用惯用版本:
for d,i in flights
d.index = i
d.date = parseDate(d.date)
d.delay = +d.delay
d.distance = +d.distance
forEach 的优点是将每个迭代包装在闭包中。 因此,异步调用可以保留正确的值。这样做的 coffeescript 方式(没有实际使用 forEach)是
for d,i in flights
do (d, i)->
d.index = i
d.date = parseDate(d.date)
d.delay = +d.delay
d.distance = +d.distance
这将编译为与 OP 的示例非常相似的内容:
_fn = function(d, i) {
d.index = i;
d.date = parseDate(d.date);
d.delay = +d.delay;
return d.distance = +d.distance;
};
for (i = _i = 0, _len = flights.length; _i < _len; i = ++_i) {
d = flights[i];
_fn(d, i);
}
如果您需要 IE9 支持,请使用此选项<(对于从版本 9 开始的 IE 中支持的每个)
相关文章:
- 如何在将Node异步函数转换为promise时使用Q库
- 如何分解jQuery"toggle”;函数转换为separate“;显示“;以及“;隐藏“;功能
- 将函数转换为jQuery插件
- jquery递归函数转换为非递归函数
- jQuery函数转换为MooTools
- 将javascript函数转换为jquery
- 将Window Onload函数转换为非阻塞
- 如何将下面的递归函数转换为纯函数
- 将jquery函数转换为js
- 如何将这个递归函数转换为迭代函数
- 将递归函数转换为异步 CPS 实现 (javascript)
- 通过在JavaScript中将函数转换为对象可以实现什么
- 从JavaScript函数转换为jQuery
- JS:将单参数函数转换为可链接函数
- 如何将此函数转换为 Angular 指令
- 从控制台中的工作函数转换为工作脚本.(请参阅编辑)
- 将图像的 onError 函数转换为返回函数
- jQuery:将每个函数转换为 for 循环
- 如何将 JavaScript forEach 循环/函数转换为 CoffeeScript
- Javascript 将声明为函数字典的函数转换为原型