Mi hash javascript en mi página web se ve así:

{"7":{"prop1":234, ....}"101":{"prop1":121,....}

Estoy tratando de hacer referencia a esto así:

var a = 7;

my_hash[a].prop1

Pero no parece encontrar el objeto hash en la clave 'a', ya que a es un número entero y mis claves son cadenas.

¿Cómo se puede convertir en una cadena?

Lo intenté:

my_hash[" + a + "].prop1

Pero eso tampoco funcionó.

1
Blankman 8 ago. 2011 a las 03:47

4 respuestas

La mejor respuesta

Solo crea una cadena:

var a = "7";

Si ya tiene un número y desea convertirlo en una cadena, forzarlo a una cadena de esta manera:

var n = 7;
var a = n + "";

Entonces, todo esto funcionará:

my_hash["7"].prop1;

var a = "7";
my_hash[a].prop1;

var n = 7;
var a = n + "";
my_hash[a].prop1;

Editar: algunos ejemplos que lo convierten en una cadena en línea:

my_hash[7 + ""].prop1;

var n = 7;
my_hash[n + ""].prop1;
6
gilly3 8 ago. 2011 a las 00:00

Puede forzar el número en una cadena como sugiere gilly3. Pero también puede llamar a .toString en el número mismo. Por ejemplo:

(1).toString() === "1" // evaluates to true.

Esto también funciona para variables, por lo que puede hacer esto:

for (var i=0; i<10; i++) {
    property = myObject[i.toString()]["property"];
    // do something with property
}
0
Benry 8 ago. 2011 a las 00:01

¿Por qué no esto?

var a = "7";

my_hash[a].prop1

O

my_hash["7"].prop1

Además, supongo que esto fue solo un problema de copiar / pegar en SO, pero falta una coma en esto:

{"7":{"prop1":234, ....}"101":{"prop1":121,....}

Debe ser:

{"7":{"prop1":234, ....}, "101":{"prop1":121,....}
1
jfriend00 7 ago. 2011 a las 23:51
var x = {"7":{"prop1":234},"101":{"prop1":121}};
var a = 7;
console.log(x[a+""].prop1);

http://jsfiddle.net/userdude/ZGWHU/

0
Jared Farrish 7 ago. 2011 a las 23:52