length
adalah properti, bukan metode. Anda tidak dapat menyebutnya, maka Anda tidak perlu tanda kurung ()
:
function getlength(number) {
return number.toString().length;
}
PEMBARUAN: Seperti yang dibahas di komentar, contoh di atas tidak akan berfungsi untuk nomor float. Untuk membuatnya bekerja, kita bisa menghilangkan titik dengan String(number).replace('.', '').length
, atau menghitung angka dengan ekspresi reguler:String(number).match(/\d/g).length
.
Dalam hal kecepatan, cara tercepat untuk mendapatkan jumlah digit dalam bilangan tertentu adalah dengan melakukannya secara matematis. Untuk bilangan bulat positif ada algoritma yang bagus dengan log10
:
var length = Math.log(number) * Math.LOG10E + 1 | 0; // for positive integers
Untuk semua jenis bilangan bulat (termasuk negatif) ada solusi optimal yang brilian dari @ Mwr247 , tetapi hati-hatilah saat menggunakannya Math.log10
, karena tidak didukung oleh banyak browser lama. Jadi, mengganti Math.log10(x)
dengan Math.log(x) * Math.LOG10E
akan menyelesaikan masalah kompatibilitas.
Membuat solusi matematika yang cepat untuk bilangan desimal tidak akan mudah karena perilaku matematika floating point yang terkenal , sehingga pendekatan cast-to-string akan lebih mudah dan bukti yang bodoh. Seperti yang disebutkan oleh @streetlogics, pengecoran cepat dapat dilakukan dengan penggabungan angka ke string, yang mengarahkan solusi penggantian untuk diubah menjadi:
var length = (number + '').replace('.', '').length; // for floats