Underscore: _.keys selalu mengembalikan string

Dibuat pada 6 Feb 2013  ·  5Komentar  ·  Sumber: jashkenas/underscore

_.keys({111: 222, 333: 444}) mengembalikan ["111", "333"] , tetapi diharapkan [111, 333] .
Juga mempengaruhi fungsi lain seperti _.pairs: _.pairs({1: 1})`returns`[["1", 1]]`, but expected`[[1, 1]] .

Terima kasih!

invalid

Komentar yang paling membantu

Kunci selalu string.

var obj = {};
obj[1] = 1;
for (var key in obj) console.log(typeof key); // string

Anda dapat mencari kunci '1' dengan obj[1] atau obj['1'] sebagai kemudahan, bukan karena kuncinya adalah angka.

Jika Anda ingin kunci sebagai angka, coba

var obj = {};
obj[1] = 1;
_.map(_.keys(obj), Number);

Semua 5 komentar

Kunci selalu string.

var obj = {};
obj[1] = 1;
for (var key in obj) console.log(typeof key); // string

Anda dapat mencari kunci '1' dengan obj[1] atau obj['1'] sebagai kemudahan, bukan karena kuncinya adalah angka.

Jika Anda ingin kunci sebagai angka, coba

var obj = {};
obj[1] = 1;
_.map(_.keys(obj), Number);

Hai @marcalj! Mengembalikan nama properti sebagai string adalah bagian dari spec . Jika Anda membutuhkan angka, solusi @caseywebdev di atas akan berfungsi untuk sebagian besar kasus.

Aduh saya mengerti, terima kasih atas respon cepatnya! Kamu keren!!
Saya menggunakan parseInt(number, 10) tetapi menggunakan Number lebih bersih ;)

Terima kasih lagi!

Solusi @caseywebdev tidak akan berfungsi ketika Anda memiliki objek kunci campuran. seperti {"asdf":123, 1:1234} Saya menyadari Anda mengatakan "sebagian besar" kasus, saya hanya menunjukkan ketika itu tidak akan berhasil.

@johnymonster dengan kunci campuran, dapat dimodifikasi untuk

_.map(_.keys(obj), function (key) { return isNaN(+key) ? key : +key; });
Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

jdalton picture jdalton  ·  6Komentar

markvr picture markvr  ·  3Komentar

sky0014 picture sky0014  ·  8Komentar

githublyp picture githublyp  ·  3Komentar

arypbatista picture arypbatista  ·  3Komentar