tutorial react objects javascript foreach coffeescript d3.js crossfilter

react - ¿Cómo convierto un JavaScript para cada bucle/función a CoffeeScript?



coffeescript vs typescript (3)

La traducción directa es:

flights.forEach (d, i) -> d.index = i d.date = parseDate(d.date) d.delay = +d.delay d.distance = +d.distance

o puedes usar una versión idiomática:

for d,i in flights d.index = i d.date = parseDate(d.date) d.delay = +d.delay d.distance = +d.distance

Antecedentes : intento convertir un código JavaScript que utiliza la biblioteca Crossfilter con la biblioteca de visualización de datos D3.js en CoffeeScript .

¿Cuál es la mejor forma de convertir JavaScript para cada ciclo / función en CoffeeScript?

Aquí está el código de 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 puede hacer una función en línea dentro de un bucle? En este momento, supongo que lo necesito dividido en una función y un ciclo:

coerce = (d) -> d.index = 1 d.date = parseDate(d.date) d.delay = +d.delay d.distance = +d.distance coerce(flights) for d in flights


porque cada uno tiene la ventaja de envolver cada iteración en un cierre. para que las llamadas asincrónicas puedan conservar los valores correctos. la manera coffeescript de hacer esto (sin usar forEach) es

for d,i in flights do (d, i)-> d.index = i d.date = parseDate(d.date) d.delay = +d.delay d.distance = +d.distance

esto compila a algo muy similar a la muestra de 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); }

Use esto si necesita soporte <ie9 (para cada uno soportado en IE desde la versión 9)


usa una comprensión

for d, i in flights console.log d, i

El código anterior se traduce a

var d, i, _i, _len; for (i = _i = 0, _len = flights.length; _i < _len; i = ++_i) { d = flights[i]; console.log(d, i); }

para que puedas ver d y i somos lo que quieres que sean.

CoffeeScript y busque "forEach" para algunos ejemplos.

Finalmente, mira el primer comentario para obtener más información útil.