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.