tutorial react objects node convertir coffee javascript coffeescript

javascript - react - Alguna idea de por qué esto sucede en coffeescript



node js (4)

Tengo el siguiente código en coffeescript después de ejecutar estas líneas, el valor de str sigue siendo "d41d8cd98f00b204". ¿Alguna idea de lo que podría estar haciendo mal?

dataDict = {email: "[email protected]", t:213213.213213} apiFields = [''email'', ''password'', ''backup_email'', ''firstname'', ''lastname'', ''dob'', ''username'', ''position'', ''industry'', ''institution'', ''verificationcode'', ''confirmcode'', ''signuphost'', ''responses'', ''t''] str = "d41d8cd98f00b204" for ind in apiFields str = str + dataDict[ind] if ind in dataDict console.log(str)


Del fino manual :

Puede usar in para comprobar la presencia de matriz y para comprobar la presencia of JavaScript de la clave de objeto.

in es para verificar si un elemento está en una matriz (como lo usas for ... in para iterar sobre una matriz), si quieres probar si una clave está en un objeto que usarías (al igual que usas for ... of iterar sobre un objeto):

str = str + dataDict[ind] if ind of dataDict # -------------------------------^^


Creo que solo funciona en arreglos, prueba:

str = str + dataDict[ind] if dataDict[ind]


Lo haría:

append = dataDict[ind] str = str + append if append

Lo que haces compila a:

if (__indexOf.call(dataDict, ind) >= 0) str = str + dataDict[ind];

dónde

__indexOf === [].indexOf //Array.prototype''s indexOf

, y el indexOf Array.prototype no funciona en objetos que no son de matriz.


Verifique la expansión de if ind in dataDict :

if (indexOf.call(dataDict, ind) >= 0) { str = str + dataDict[ind]; }

Comprobando if dataDict.hasOwnProperty(ind) debería hacer que esto funcione.