length
є властивістю, а не методом. Ви не можете його назвати, отже, вам не потрібні дужки ()
:
function getlength(number) {
return number.toString().length;
}
ОНОВЛЕННЯ: Як обговорювалося в коментарях, вищенаведений приклад не працює для плаваючих чисел. Для того, щоб зробити його працювати можна або позбавитися від періоду з String(number).replace('.', '').length
або підраховувати цифри з регулярним виразом: String(number).match(/\d/g).length
.
З точки зору швидкості, потенційно найшвидший спосіб отримати кількість цифр у даному номері - це зробити це математично. Для натуральних чисел існує чудовий алгоритм із log10
:
var length = Math.log(number) * Math.LOG10E + 1 | 0; // for positive integers
Для всіх типів цілих чисел (включаючи мінуси) існує блискуче оптимізоване рішення від @ Mwr247 , але будьте обережні з використанням Math.log10
, оскільки це не підтримується багатьма застарілими браузерами. Тож заміна Math.log10(x)
на Math.log(x) * Math.LOG10E
вирішить проблему сумісності.
Створення швидких математичних рішень для десяткових чисел буде непростим завдяки добре відомій поведінці математики з плаваючою комою , тому підхід до передачі рядків буде більш легким і неправдивим. Як зазначає @streetlogics, швидкий кастинг може бути виконаний з простою конкатенацією чисел до рядків, що призводить до того, що рішення заміни буде перетворене на:
var length = (number + '').replace('.', '').length; // for floats