_.keys({111: 222, 333: 444})
retorna ["111", "333"]
, mas é esperado [111, 333]
.
Também afeta outras funções como _.pairs: _.pairs({1: 1})`returns`[["1", 1]]`, but expected`[[1, 1]]
.
Obrigado!
As chaves são sempre strings.
var obj = {};
obj[1] = 1;
for (var key in obj) console.log(typeof key); // string
Você pode procurar a chave '1'
com obj[1]
ou obj['1']
como uma conveniência, não porque a chave seja um número.
Se você quiser as chaves como números, tente
var obj = {};
obj[1] = 1;
_.map(_.keys(obj), Number);
Oi @marcalj! Retornar nomes de propriedades como strings faz parte da especificação . Se você precisar de números, a solução de @caseywebdev acima funcionará na maioria dos casos.
Ouch entendo, obrigado pela resposta rápida! Você é demais!!
Eu estava usando parseInt(number, 10)
mas usar Number
é mais limpo;)
Obrigado novamente!
A solução
@johnymonster com chaves mistas, pode ser modificado para
_.map(_.keys(obj), function (key) { return isNaN(+key) ? key : +key; });
Comentários muito úteis
As chaves são sempre strings.
Você pode procurar a chave
'1'
comobj[1]
ouobj['1']
como uma conveniência, não porque a chave seja um número.Se você quiser as chaves como números, tente