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 presenciaof
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.