_.keys({111: 222, 333: 444})
devuelve ["111", "333"]
, pero se esperaba [111, 333]
.
También afecta a otras funciones como _.pairs: _.pairs({1: 1})`returns`[["1", 1]]`, but expected`[[1, 1]]
.
¡Gracias!
Las claves son siempre cadenas.
var obj = {};
obj[1] = 1;
for (var key in obj) console.log(typeof key); // string
Puede buscar la clave '1'
con obj[1]
o obj['1']
para su conveniencia, no porque la clave sea un número.
Si quiere las claves como números, intente
var obj = {};
obj[1] = 1;
_.map(_.keys(obj), Number);
¡Hola @marcalj! Devolver nombres de propiedad como cadenas es parte de la especificación . Si necesita números, la solución de @caseywebdev anterior funcionará en la mayoría de los casos.
¡Ay, ya veo, gracias por la rápida respuesta! ¡¡Tú Molas!!
Estaba usando parseInt(number, 10)
pero usar Number
es más limpio;)
¡Gracias de nuevo!
La solución
@johnymonster con claves mixtas, se puede modificar para
_.map(_.keys(obj), function (key) { return isNaN(+key) ? key : +key; });
Comentario más útil
Las claves son siempre cadenas.
Puede buscar la clave
'1'
conobj[1]
oobj['1']
para su conveniencia, no porque la clave sea un número.Si quiere las claves como números, intente