javascriptの値が1桁であるかどうかを判断する最良の方法は何ですか。私は次のようなことをしています
var valAsString = '' + val;
if (valAsString.match(/\d/) {}
明確化:私は0、1、2、3、4、5、6、7、8、9のいずれかを意味します
また、私が仕事をしている必要がありますか?人々がこれのために思いついている多くの異なる方法に驚いています。
javascriptの値が1桁であるかどうかを判断する最良の方法は何ですか。私は次のようなことをしています
var valAsString = '' + val;
if (valAsString.match(/\d/) {}
明確化:私は0、1、2、3、4、5、6、7、8、9のいずれかを意味します
また、私が仕事をしている必要がありますか?人々がこれのために思いついている多くの異なる方法に驚いています。
正規表現は、文字列の任意の場所の/\d/
数字と一致します。たとえば、in"foo1"
はと一致し"1"
ます。
正規表現アプローチの場合、文字列に1桁の数字が含まれるようにするには、次のようなものが必要です。
if (/^\d$/.test(val)) {
//..
}
このメソッドを使用していることに注意してくださいtest
。これは、文字列がパターンと一致するかどうかだけを確認する場合に推奨されます。また、test
メソッドは内部的に引数をstingに変換します。
別の短い非正規表現アプローチ:
function isDigit(val) {
return String(+val).charAt(0) == val;
}
うーん、文字列の長さが1に等しいかどうかを確認しますか?
if (typeof(val) === "number")
{
var valAsString = val.toString(10);
if (valAsString.length === 1) {}
}
ただし、これは負の数または小数成分を含む数を受け入れません。
ネガを含めたくない場合は、ソリューションと同様にこれが機能します。
var valAsString = val.toString();
if (valAsString.length === 1) {}
文字列が-10から10の間であるかどうかを確認するだけで済みます(負の数を含めると仮定します)。これは最速ですが、非整数では機能しないため、おそらく回避するのが最善です。
負の数を含めたい場合は、おそらく数値が整数かどうかを確認し、次のようにします。
var isSingleDigitIncludingNegatives = function( arg ) {
return ((typeof(myNum)=='number') && (myNum.toString().indexOf('.')==-1)) && (( -10 < arg ) && ( arg < 10))
それがすでに数値であると仮定するとval
...
if ((val >= 0) && (val < 10) && (Math.floor(val) == val)) {
// ...
}
このようなものはどうですか:
var check = parseFloat(val);
var isSingleDigit = (!isNaN(check) && (check < 10 && check > -10) && check.toString().length ==1);
正規表現の以下の変更を使用できます。
valAsString.match(/^\d$/)
おもう
(+val + val % 1 + 10) % 10 === val
type の値のみを受け入れたいと仮定すると、それを行う必要がありますnumber
。
よりクリーンなソリューションは
typeof val === 'number' && val >>> 0 === val % 10
これは、他のタイプの値を含むように簡単に適応できます。