Javascript length в число

Получить количество цифр с помощью JavaScript

Как видно из названия моего поста, я хотел бы знать, сколько цифр у var number . Например: если number = 15; моя функция должна вернуть 2 . В настоящее время это выглядит так:

'2' is not a function (evaluating 'number.toString().length()') 

9 ответов

ОБНОВЛЕНИЕ:. Как обсуждалось в комментариях, приведенный выше пример не будет работать для чисел с плавающей запятой. Чтобы заставить его работать, мы можем либо избавиться от периода с помощью 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 

Источник

Читайте также:  Typhography

Особенности свойства length массивов

В JavaScript свойство length возвращает длину или количество элементов некоторой сущности (объекта). Например, для строки свойство length вернет количество символов в строке, а для плотного массива — число элементов.

Следует избегать именования переменных словом length , т.к. в JavaScript оно является зарезервированным и относится к глобальному объекту window :

Массивы в JavaScript индексируются с нуля:

  • первый элемент массива имеет индекс, равный 0;
  • индекс последнего элемента равен значению свойства массива (length – 1) .

Cвойство length массива (который является экземпляром объекта типа Array ) устанавливает или возвращает число элементов этого массива, включая пустые (т.е. не имеющие значений) элементы.

Свойство length массива:

  1. является целым числом с положительным знаком и значением, меньшим чем 2 32 ;
  2. всегда численно больше чем самый наибольший индекс элемента в массиве.

Плотный массив хранит набор значений (элементов массива), идентифицируемых по индексу или набору индексов, принимающих целые (или приводимые к целым) значения из некоторого заданного непрерывного диапазона .

Разрежённый массив — абстрактное представление обычного массива, в котором данные представлены не непрерывно, а фрагментарно, при этом пропущенные элементы индексов не имеют:

a [ 10 ] = «foobar» ; // массив а больше не плотный, разрыв между индексами элементов массива: 0,1,2 и 10 (индексов с 3 по 9 в массиве нет)

console . log ( a . length ) ; // 11 (не соответствует реальному количеству элементов массива, имеющих значение: их всего 4)

Особенности свойства length массива:

  1. Замечание 1: Cвойство length не указывает количество элементов массива с определёнными значениями:
    • в плотном массиве количество элементов соответствует значению свойства length массива без единицы (т.е. length-1 );
    • в разреженном массиве length не указывает на реальное количество элементов : значение length будет больше, чем количество элементов массива, имеющих значение.
  2. Замечание 2: При добавлении или удалении элементов значение length изменяют только операции, изменяющие максимальный индекс элементов (т.е. размер массива). Любые изменения массива, которые не влияют на индекс с максимальным значением, не изменяют значение length , например, при использовании delete :

console . log ( a . length ) ; // 11 (значение length массива при удалении элемента массива не изменилось)

Изменение свойства массива length , удаление элементов с помощью delete , добавление элементов с новым индексом может является причиной возникновения создаются разрежённых массивов.

Взаимосвязь свойства length с числовыми свойствами массивов

Некоторые встроенные методы массива (например, join , slice , indexOf и т.д.) учитывают значение свойства length при своём вызове. Другие методы (например, push , splice и т.д.) в результате своей работы обновляют свойство length массива.

При установке свойства в массиве, если свойство имеет действительный индекс и этот индекс выходит за пределы текущих границ массива , движок соответствующим образом обновит свойство length :

Источник

.length

Свойство, которое возвращает количество элементов в массиве.

Время чтения: меньше 5 мин

Кратко

Скопировать ссылку «Кратко» Скопировано

Свойство length возвращает количество элементов в массиве. Если элементов нет, то свойство возвращает 0.

Пример

Скопировать ссылку «Пример» Скопировано

 const series = ['Кремниевая долина', 'Игра престолов', 'Рик и Морти', 'Гравити Фолс']console.log(series.length)// 4 const empty = []console.log(empty.length)// 0 const series = ['Кремниевая долина', 'Игра престолов', 'Рик и Морти', 'Гравити Фолс'] console.log(series.length) // 4 const empty = [] console.log(empty.length) // 0      

Как понять

Скопировать ссылку «Как понять» Скопировано

Свойство length хранит количество ячеек в массиве. Строго говоря, количество ячеек может быть больше, чем количество элементов в массиве, но на практике они почти всегда совпадают.

Значение свойства length — целое положительное число в диапазоне от 0 до 2 32 .

Запись в свойство length

Скопировать ссылку «Запись в свойство length» Скопировано

Свойство length перезаписываемое, вы можете записать в него любое число из диапазона возможных значений. Это изменит количество ячеек массива.

Если уменьшить значение свойства length , то из конца массива будут отброшены элементы, которые не входят в новый размер массива:

 const series = ['Кремниевая долина', 'Игра престолов', 'Рик и Морти', 'Гравити Фолс']console.log(series.length)// 4 series.length = 2console.log(series)// ['Кремниевая долина', 'Игра престолов'] const series = ['Кремниевая долина', 'Игра престолов', 'Рик и Морти', 'Гравити Фолс'] console.log(series.length) // 4 series.length = 2 console.log(series) // ['Кремниевая долина', 'Игра престолов']      

Если увеличить значение свойства length , то в конец массива добавятся пустые ячейки. Значение в них не будет установлено и они будут игнорироваться при обходе:

 const todos = ['купить молока', 'почитать Доку']console.log(todos.length)// 2 todos.length = 4console.log(todos)// ['купить молока', 'почитать Доку', ] todos.forEach(function(todo, index)  console.log(`$. todo`)>)// 1. купить молока// 2. почитать Доку const todos = ['купить молока', 'почитать Доку'] console.log(todos.length) // 2 todos.length = 4 console.log(todos) // ['купить молока', 'почитать Доку', ] todos.forEach(function(todo, index)  console.log(`$index + 1>. todo`) >) // 1. купить молока // 2. почитать Доку      

Случаи, когда length не совпадает с количеством элементов в массиве

Скопировать ссылку «Случаи, когда length не совпадает с количеством элементов в массиве» Скопировано

Корректнее всего говорить, что свойство length хранит количество ячеек доступных для записи в массиве, а не количество элементов. Они почти всегда совпадают, но есть случаи, когда в массиве больше ячеек, чем значений. Разберём эти случаи.

1️⃣ При создании пустого массива с помощью конструктора new Array ( ) можно указать количество ячеек в массиве. Тогда количество ячеек и количество элементов не будут совпадать:

 const emptyArray = new Array(100)console.log(emptyArray.length)// 100 const emptyArray = new Array(100) console.log(emptyArray.length) // 100      

Такой проблемы не случится, если создавать массив с помощью литерала:

 const anotherEmptyArray = []console.log(anotherEmptyArray.length)// 0 const anotherEmptyArray = [] console.log(anotherEmptyArray.length) // 0      

2️⃣ При записи нового элемента в индекс далеко за пределами массива. В этом случае между последним элементом и новым появляется «дыра» из пустых ячеек:

 const priorities = ['спать', 'есть', 'пить']console.log(priorities.length)// 3 priorities[999] = 'работать'console.log(priorities.length)// 1000console.log(priorities)// ['спать', 'есть', 'пить', , 'работать'] const priorities = ['спать', 'есть', 'пить'] console.log(priorities.length) // 3 priorities[999] = 'работать' console.log(priorities.length) // 1000 console.log(priorities) // ['спать', 'есть', 'пить', , 'работать']      

3️⃣ При ручном увеличении значения свойства length :

 const todos = ['купить молока', 'почитать Доку']console.log(todos.length)// 2 todos.length = 4console.log(todos)// ['купить молока', 'почитать Доку', ] const todos = ['купить молока', 'почитать Доку'] console.log(todos.length) // 2 todos.length = 4 console.log(todos) // ['купить молока', 'почитать Доку', ]      

На практике

Скопировать ссылку «На практике» Скопировано

Николай Лопин советует

Скопировать ссылку «Николай Лопин советует» Скопировано

🛠 Свойство length используется при обходе массивов с помощью классических циклов for или while . На практике такие циклы уже встречаются редко, но это идиоматический код, который нужно знать. Если применить length неправильно, то можно перебрать не все элементы или сделать бесконечный цикл.

Классический код, который напечатает все элементы массива:

 const movies = ['Good Will Hunting', 'Raining Man', 'Beautiful Mind']for (let i = 0; i < movies.length; i++)  console.log(movies[i])> const movies = ['Good Will Hunting', 'Raining Man', 'Beautiful Mind'] for (let i = 0; i  movies.length; i++)  console.log(movies[i]) >      

🛠 Чаще всего к свойству обращаются, когда хотят проверить, пустой массив или нет:

 const movies = [] if (movies.length === 0)  console.log('Вы посмотрели все фильмы!')> const movies = [] if (movies.length === 0)  console.log('Вы посмотрели все фильмы!') >      

🛠 Не записывайте вручную значения в length . Хотя это и возможно, на практике такой код плохо читается. Он может неприятно удивить других разработчиков из-за того, что изменяет размер массива. Об этом побочном эффекте знают не все.

Источник

How to Find the Length of a JavaScript Number?

white seal on soil

Sometimes, we want to find the length of a JavaScript number in our JavaScript app.

In this article, we’ll look at how to find the length of a JavaScript number.

Convert the Number to a String and Use the String’s length Property

One way to find the length of a JavaSdcript number is to convert the number to a string and then use the string’s length property to get the number’s length.

For instance, we can write:

const x = 1234567; console.log(x.toString().length); 

Then we call toString on it to convert it to a string.

And then we use the length property to return its length.

Therefore, the console log should log 7.

Use the Math.ceil and Math.log Methods

We can get the logarithm of the number with base 10 to get the length of a number.

To do this, we cal use the Math.log to get the natural log of the number.

Then we can divide the returned result by Math.LN10 to convert it to the log with base 10 of the same number.

And then we call Math.ceil of that to round it up to the nearest integer to get the length.

For instance, we can write:

const x = 1234567; const len = Math.ceil(Math.log(x + 1) / Math.LN10); console.log(len); 

We add 1 to x to avoid taking the log of 0 when x is 0.

Then we get that len is 7.

Use the Math.ceil and Math.log10 Methods

ES6 comes with the Math.log10 method to get the log with base 10 of a number.

const x = 1234567; const len = Math.ceil(Math.log10(x + 1)); console.log(len); 

We call Math.log10 with x + 1 to avoid taking the log of 0 when x is 0.

And we use Math.ceil again to round the log up to the nearest integer.

And so we should get the same result as the other examples.

Conclusion

We can find the length of a number with various JavaScript math methods or convert it to a string and use the length property.

Источник

Оцените статью