4

javascriptの値が1桁であるかどうかを判断する最良の方法は何ですか。私は次のようなことをしています

var valAsString = '' + val;
if (valAsString.match(/\d/) {}

明確化:私は0、1、2、3、4、5、6、7、8、9のいずれかを意味します

また、私が仕事をしている必要がありますか?人々がこれのために思いついている多くの異なる方法に驚いています。

4

7 に答える 7

11

正規表現は、文字列の任意の場所の/\d/数字と一致します。たとえば、in"foo1"はと一致し"1"ます。

正規表現アプローチの場合、文字列に1桁の数字が含まれるようにするには、次のようなものが必要です。

if (/^\d$/.test(val))  {
  //..
}

このメソッドを使用していることに注意してくださいtest。これは、文字列がパターンと一致するかどうかだけを確認する場合に推奨されます。また、testメソッドは内部的に引数をstingに変換します。

別の短い非正規表現アプローチ:

function isDigit(val) {
  return String(+val).charAt(0) == val;
}
于 2010-10-01T23:33:47.497 に答える
3

うーん、文字列の長さが1に等しいかどうかを確認しますか?

if (typeof(val) === "number")
    {
    var valAsString = val.toString(10);
    if (valAsString.length === 1) {}
    }

ただし、これは負の数または小数成分を含む数を受け入れません。

于 2010-10-01T23:28:33.793 に答える
2

ネガを含めたくない場合は、ソリューションと同様にこれが機能します。

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))
于 2010-10-01T23:27:52.367 に答える
0

それがすでに数値であると仮定するとval...

if ((val >= 0) && (val < 10) && (Math.floor(val) == val)) {
    // ...
}
于 2010-10-01T23:28:18.523 に答える
0

このようなものはどうですか:

var check = parseFloat(val);
var isSingleDigit = (!isNaN(check) && (check < 10 && check > -10) && check.toString().length ==1);
于 2010-10-01T23:28:24.153 に答える
0

正規表現の以下の変更を使用できます。

valAsString.match(/^\d$/)

于 2010-10-01T23:39:59.247 に答える
0

おもう

(+val + val % 1 + 10) % 10 === val

type の値のみを受け入れたいと仮定すると、それを行う必要がありますnumber

よりクリーンなソリューションは

typeof val === 'number' && val >>> 0 === val % 10

これは、他のタイプの値を含むように簡単に適応できます。

于 2010-10-02T00:32:00.680 に答える