Underscore: _.keys geben immer Zeichenfolgen zurück

Erstellt am 6. Feb. 2013  ·  5Kommentare  ·  Quelle: jashkenas/underscore

_.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!

invalid

Hilfreichster Kommentar

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);

Alle 5 Kommentare

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; });
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

Francefire picture Francefire  ·  5Kommentare

acl0056 picture acl0056  ·  5Kommentare

chikamichi picture chikamichi  ·  8Kommentare

haggholm picture haggholm  ·  8Kommentare

arypbatista picture arypbatista  ·  3Kommentare