我正在使用一个对象作为哈希表,并且我已经将常规属性和整数作为键填充到其中。
我现在有兴趣计算此对象中的键数,这些键是数字,但显然 afor (x in obj) { if (typeof x === "number") { ... } }
不会产生我想要的结果,因为所有键都是字符串。
因此,我确定如果键的第一个字符是数字,那么它必须是数字就足够了,因此我不关心键“3a”是否“错误地”确定为数字。
鉴于这种放松,我想我可以像这样检查它
for (x in obj) {
var charCode = x.charCodeAt(0);
if (charCode < 58 && charCode > 47) { // ascii digits check
...
}
}
从而避免使用正则表达式parseInt
等。
这行得通吗?charCodeAt
是 JS 1.2 所以这应该是防弹的,是吗?
提示:我希望看到一个 jsperf 将我的函数与每个人提出的函数进行比较。:) 我会自己做,但 jsperf 让我很困惑
更新:感谢您启动 JSPerf,它证实了我希望该charCodeAt
函数将执行一段非常快速的代码,读取字符的 int 值。其他方法涉及解析。