_.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!
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; });
Komentar yang paling membantu
Kunci selalu string.
Anda dapat mencari kunci
'1'
denganobj[1]
atauobj['1']
sebagai kemudahan, bukan karena kuncinya adalah angka.Jika Anda ingin kunci sebagai angka, coba