_.keys({111: 222, 333: 444})
gibt ["111", "333"]
, aber erwartet [111, 333]
.
Beeinflusst auch andere Funktionen wie _.pairs: _.pairs({1: 1})`returns`[["1", 1]]`, but expected`[[1, 1]]
.
Vielen Dank!
Schlüssel sind immer Zeichenfolgen.
var obj = {};
obj[1] = 1;
for (var key in obj) console.log(typeof key); // string
Sie können den Schlüssel '1'
mit obj[1]
oder obj['1']
nachschlagen, nicht weil der Schlüssel eine Zahl ist.
Wenn Sie die Tasten als Zahlen haben möchten, versuchen Sie es
var obj = {};
obj[1] = 1;
_.map(_.keys(obj), Number);
Hallo @marcalj! Die Rückgabe von Eigenschaftsnamen als Strings ist Teil der Spezifikation . Wenn Sie Zahlen benötigen, funktioniert die obige Lösung von
Autsch ich verstehe, danke für die schnelle Antwort! Du rockst!!
Ich habe parseInt(number, 10)
aber Number
ist sauberer;)
Danke noch einmal!
Die @caseywebdev- Lösung funktioniert nicht, wenn Sie gemischte Schlüsselobjekte haben. wie {"asdf":123, 1:1234} Mir ist klar, dass Sie "die meisten" Fälle gesagt haben, ich habe nur darauf hingewiesen, wenn es nicht funktionieren würde.
@johnymonster mit gemischten Tasten, es kann geändert werden zu
_.map(_.keys(obj), function (key) { return isNaN(+key) ? key : +key; });
Hilfreichster Kommentar
Schlüssel sind immer Zeichenfolgen.
Sie können den Schlüssel
'1'
mitobj[1]
oderobj['1']
nachschlagen, nicht weil der Schlüssel eine Zahl ist.Wenn Sie die Tasten als Zahlen haben möchten, versuchen Sie es