_.keys({111: 222, 333: 444})
renvoie ["111", "333"]
, mais attendu [111, 333]
.
Affecte également d'autres fonctions comme _.pairs : _.pairs({1: 1})`returns`[["1", 1]]`, but expected`[[1, 1]]
.
Merci!
Les clés sont toujours des chaînes.
var obj = {};
obj[1] = 1;
for (var key in obj) console.log(typeof key); // string
Vous pouvez rechercher la clé '1'
avec obj[1]
ou obj['1']
par commodité, pas parce que la clé est un nombre.
Si vous voulez les clés sous forme de nombres, essayez
var obj = {};
obj[1] = 1;
_.map(_.keys(obj), Number);
Salut @marcalj ! Le renvoi des noms de propriété sous forme de chaînes fait partie de la spécification . Si vous avez besoin de chiffres, la solution de @caseywebdev ci-dessus fonctionnera dans la plupart des cas.
Ouch je vois, merci pour la réponse rapide! Tu gères!!
J'utilisais parseInt(number, 10)
mais utiliser Number
est plus propre ;)
Merci encore!
La solution
@johnymonster avec des clés mixtes, il peut être modifié pour
_.map(_.keys(obj), function (key) { return isNaN(+key) ? key : +key; });
Commentaire le plus utile
Les clés sont toujours des chaînes.
Vous pouvez rechercher la clé
'1'
avecobj[1]
ouobj['1']
par commodité, pas parce que la clé est un nombre.Si vous voulez les clés sous forme de nombres, essayez