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
number.toString().match(/\d/g).length
.x | 0
- это просто еще одна короткая и быстрая версияMath.floor(x)
, округляющая число в меньшую сторону. Вы можете добиться того же с помощью~~x
. Следующий вопрос дает более подробное объяснение по этому поводу: stackoverflow.com/q/9049677/1249581 .Вот математический ответ (также работает для отрицательных чисел):
И оптимизированная версия вышеупомянутого (более эффективные побитовые операции):
По сути, мы начинаем с получения абсолютного значения ввода, чтобы позволить отрицательным значениям работать правильно. Затем мы прогоняем операцию log10, чтобы получить степень 10 на входе (если бы вы работали с другой базой, вы бы использовали логарифм для этой базы), то есть количество цифр. Затем мы ограничиваем вывод, чтобы получить только целую его часть. Наконец, мы используем функцию max для исправления десятичных значений (любое дробное значение от 0 до 1 просто возвращает 1 вместо отрицательного числа) и добавляем 1 к окончательному результату, чтобы получить счет.
Вышеизложенное предполагает (на основе вашего примера ввода), что вы хотите подсчитать количество цифр в целых числах (поэтому 12345 = 5, и, следовательно, 12345.678 = 5). Если вы хотите подсчитать общее количество цифр в значении (так 12345.678 = 8), добавьте это перед «возвратом» в любой из приведенных выше функций:
источник
Math.LOG10E
существует с ES1, что означает, что онMath.log(x) * Math.LOG10E
будет работать для совместимости.Поскольку это появилось в поиске Google по запросу «javascript get number of digits», я хотел сказать, что есть более короткая альтернатива этому, которая полагается на внутреннее приведение, которое будет выполнено за вас:
Урожайность
источник
Если вам нужны цифры (после разделителя), вы можете просто разделить число и подсчитать длину второй части (после точки).
источник
источник
Я все еще как бы изучаю Javascript, но некоторое время назад я придумал эту функцию на C, которая использует математику и цикл while, а не строку, поэтому я переписал ее для Javascript. Возможно, это можно было бы как-то сделать рекурсивно, но я до сих пор не совсем понял концепцию :( Это лучшее, что я мог придумать. Я не уверен, с какими большими числами он работает, это сработало, когда я поставил сотню цифры.
изменить: работает только с целочисленными значениями
источник
Примечание: эта функция будет игнорировать числа после средней десятичной точки. Если вы хотите считать с десятичной дробью, удалите
Math.floor()
. Сразу к делу, проверьте это!// ES5 +
В основном то, что здесь происходит.
toString()
иString()
та же встроенная функция для преобразования цифры в строку, после преобразования мы найдем длину строки с помощью встроенной функцииlength
.Предупреждение: но эта функция не будет работать должным образом для отрицательного числа, если вы пытаетесь играть с отрицательным числом, проверьте этот ответ или просто введите
Math.abs()
его;Ура!
источник
источник
Две цифры: простая функция, если вам нужны две или более цифр числа с ECMAScript 6 (ES6):
источник
Формулировка проблемы: подсчет числа / строки без использования функции string.length () jsfunction. Решение: мы могли бы сделать это через Forloop. например
}
источник
Вот мое решение. Он работает с положительными и отрицательными числами. Надеюсь это поможет
источник
было бы просто получить длину как
где ЧИСЛО - это число, для которого требуется получить длину
источник
Вы можете использовать в этом трюке
(''+number).length
источник
Используйте следующее выражение, чтобы получить длину числа.
источник
Свойство length возвращает длину строки (количество символов).
Длина пустой строки равна 0.
Результат n будет: 12
Результат n будет: 0
Свойство length устанавливает или возвращает количество элементов в массиве.
Результат будет: 4
Синтаксис:
Вернуть длину массива:
Установите длину массива:
источник