オブジェクトをハッシュ テーブルとして使用しており、通常のプロパティと整数の両方をキーとして詰め込んでいます。
私は今、このオブジェクトのキーの数を数えることに興味がありますがfor (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 値を読み取る非常に迅速なコードを実行するという私の希望が確認されました。他のアプローチには、解析が含まれます。