Búsqueda de sitios web

javascript - ¿Cómo iterar sobre las claves y valores en un objeto en CoffeeScript?


Tengo un objeto (un "array asociativo", por así decirlo, también conocido como un objeto JavaScript simple):

obj = {}
obj["Foo"] = "Bar"
obj["bar"] = "Foo"

Quiero iterar sobre obj usando CoffeeScript de la siguiente manera:

CS
for elem in obj

pero el código CS de arriba se compila a JS:

// JS
for (i = 0, len = obj.length; i < len; i++)

lo cual no es apropiado en este caso.

La forma en JavaScript sería for(var key in obj), pero ahora me pregunto: ¿cómo puedo hacer esto en CoffeeScript?

Respuesta #1

Usa for x,y of L. Documentación relevante.

ages = {}
ages["jim"] = 12
ages["john"] = 7

for k,v of ages
  console.log k + " is " + v

Salidas

jim is 12
john is 7

También puede que quieras considerar la variante for own k,v of ages como lo mencionó Aaron Dufour en los comentarios. Esto añade una verificación para excluir propiedades heredadas del prototipo, lo cual probablemente no sea un problema en este ejemplo, pero podría serlo si estás construyendo sobre otras cosas.

Respuesta #2

Estás inicializando un arreglo, pero luego lo estás usando como un objeto (no existe un "arreglo asociativo" en js).

Usa la sintaxis para iterar sobre objetos (algo así):

for key, val of arr
  console.log key + ': ' + val 

Artículos relacionados