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
number.toString().match(/\d/g).length
.x | 0
hanyalah versi singkat dan cepat dariMath.floor(x)
, yang membulatkan angkanya. Anda dapat mencapai hal yang sama dengan~~x
. Pertanyaan berikut memberikan penjelasan lebih lanjut tentang hal ini: stackoverflow.com/q/9049677/1249581 .Berikut jawaban matematis (juga berlaku untuk bilangan negatif):
Dan versi yang dioptimalkan dari yang di atas (operasi bitwise yang lebih efisien):
Pada dasarnya, kita mulai dengan mendapatkan nilai absolut dari input agar nilai negatif dapat berfungsi dengan benar. Kemudian kami menjalankan operasi melalui log10 untuk memberi kami pangkat 10 input (jika Anda bekerja di basis lain, Anda akan menggunakan logaritma untuk basis itu), yang merupakan jumlah digit. Kemudian kita lantai output hanya mengambil bagian integer itu. Terakhir, kami menggunakan fungsi max untuk memperbaiki nilai desimal (nilai pecahan apa pun antara 0 dan 1 hanya mengembalikan 1, bukan angka negatif), dan menambahkan 1 ke hasil akhir untuk menghitungnya.
Asumsi di atas (berdasarkan masukan contoh Anda) bahwa Anda ingin menghitung jumlah digit dalam bilangan bulat (jadi 12345 = 5, dan dengan demikian 12345,678 = 5 juga). Jika Anda ingin menghitung jumlah total digit dalam nilai (jadi 12345.678 = 8), tambahkan ini sebelum 'return' di salah satu fungsi di atas:
sumber
Math.LOG10E
sudah ada sejak ES1, yang artinyaMath.log(x) * Math.LOG10E
akan berfungsi untuk kompatibilitas.Karena ini muncul pada pencarian Google untuk "javascript get number of digit", saya ingin membuangnya di sana bahwa ada alternatif yang lebih pendek untuk ini yang bergantung pada casting internal yang harus dilakukan untuk Anda:
Hasil
sumber
Jika Anda membutuhkan angka (setelah pemisah), Anda cukup membagi angka dan menghitung panjang bagian kedua (setelah titik).
sumber
sumber
Saya masih belajar Javascript tetapi saya menemukan fungsi ini di C beberapa waktu yang lalu, yang menggunakan matematika dan loop sementara daripada string jadi saya menulis ulang untuk Javascript. Mungkin ini bisa dilakukan secara rekursif, tetapi saya masih belum benar-benar memahami konsepnya :( Ini adalah yang terbaik yang bisa saya hasilkan. Saya tidak yakin berapa besar angka yang berhasil, itu berhasil ketika saya memasukkan seratus digit.
edit: hanya bekerja dengan nilai integer
sumber
Catatan: Fungsi ini akan mengabaikan angka setelah titik rata-rata desimal , Jika Anda ingin menghitung dengan desimal, hapus
Math.floor()
. Langsung ke intinya lihat ini!// ES5 +
Pada dasarnya Apa yang terjadi di sini.
toString()
danString()
fungsi built-in yang sama untuk mengubah digit menjadi string, setelah kita dikonversi maka kita akan menemukan panjang string dengan fungsi built-inlength
.Peringatan: Tetapi fungsi ini tidak akan berfungsi dengan baik untuk angka negatif, jika Anda mencoba bermain dengan angka negatif maka periksa jawaban ini Atau letakkan sederhana
Math.abs()
di dalamnya;Menyemangatimu!
sumber
sumber
Dua digit: fungsi sederhana jika Anda memerlukan dua atau lebih digit angka dengan ECMAScript 6 (ES6):
sumber
Pernyataan masalah: Hitung nomor / string tidak menggunakan string.length () jsfunction. Solusi: kita bisa melakukan ini melalui Forloop. misalnya
}
sumber
Inilah solusi saya. Ia bekerja dengan bilangan positif dan negatif. Semoga ini membantu
sumber
itu akan sederhana untuk mendapatkan panjang sebagai
di mana NUM adalah angka untuk mendapatkan panjangnya
sumber
Anda bisa menggunakan trik ini
(''+number).length
sumber
Silakan gunakan ekspresi berikut untuk mendapatkan panjang nomor tersebut.
sumber
Properti panjang mengembalikan panjang string (jumlah karakter).
Panjang string kosong adalah 0.
Hasil dari n akan menjadi: 12
Hasil dari n akan menjadi: 0
Properti panjang mengatur atau mengembalikan jumlah elemen dalam larik.
Hasilnya adalah: 4
Sintaksis:
Kembalikan panjang array:
Atur panjang sebuah array:
sumber