我要在JavaScript或jQuery中获得一个数字的长度?
我尝试过价值。长度没有任何成功,我需要先将其转换为字符串吗?
我要在JavaScript或jQuery中获得一个数字的长度?
我尝试过价值。长度没有任何成功,我需要先将其转换为字符串吗?
当前回答
试试这个:
$("#element").text().length;
它在使用中的例子
其他回答
在一次测试中,我也被问到类似的问题。
找到一个数字的长度而不转换为字符串
const numbers = [1, 10, 100, 12, 123, -1, -10, -100, -12, -123, 0, -0]
const numberLength = number => {
let length = 0
let n = Math.abs(number)
do {
n /= 10
length++
} while (n >= 1)
return length
}
console.log(numbers.map(numberLength)) // [ 1, 2, 3, 2, 3, 1, 2, 3, 2, 3, 1, 1 ]
负数的添加使它更加复杂,因此Math.abs()。
首先将其转换为字符串:
var mynumber = 123;
alert((""+mynumber).length);
添加一个空字符串将隐式地导致mynumber变成一个字符串。
试试这个:
$("#element").text().length;
它在使用中的例子
如果不把整数转换成字符串,你可以做一个奇怪的循环:
var number = 20000;
var length = 0;
for(i = number; i > 1; ++i){
++length;
i = Math.floor(i/10);
}
alert(length);
演示:http://jsfiddle.net/maniator/G8tQE/
我一直在node.js中使用这个功能,这是我目前为止最快的实现:
var nLength = function(n) {
return (Math.log(Math.abs(n)+1) * 0.43429448190325176 | 0) + 1;
}
它应该处理正整数和负整数(也是指数形式),并应该以浮点数形式返回整数部分的长度。
下面的参考文献应该提供一些关于该方法的见解: Eric Weisstein;“数字长度。”来自MathWorld—Wolfram Web资源。
我相信一些位操作可以取代数学。但是jsperf显示Math. abs。Abs在大多数js引擎中工作得很好。
更新:正如评论中提到的,这个解决方案有一些问题:(
Update2(解决方案):我相信在某些时候精度问题开始出现,Math.log(…)*0.434…只是表现出人意料。但是,如果Internet Explorer或移动设备不是你的菜,你可以用Math代替这个操作。log10函数。在Node.js中,我写了一个快速的基本测试函数nLength = (n) => 1 + Math.log10(Math.abs(n) + 1) | 0;还有数学。Log10它像预期的那样工作。请注意数学。Log10不是普遍支持的。