数値が負かどうかを確認したい。私は最も簡単な方法を探しているので、事前定義されたjavascript関数が最適ですが、まだ何も見つかりませんでした。良い方法:
function negative(number) {
if (number.match(/^-\d+$/)) {
return true;
} else {
return false;
}
}
このチェックを行う関数を作成する代わりに、次の式を使用することができます。
(number < 0)
Javascriptは、この式を評価します。最初に左側が数値に変換されてから、ゼロより小さいかどうかがチェックされます。
x < y
の動作は、§11.8.1で指定されます。小なり演算子(<
)は、§11.8.5抽象関係比較アルゴリズム。
x
とy
の両方が文字列の場合、状況は大きく異なりますが、右側はすでに(number < 0)
の数値であるため、比較は左側を変換しようとします数値的に比較される数値の側面。左側を数値に変換できない場合、結果はfalse
になります。
これは正規表現ベースのアプローチと比較すると異なる結果をもたらす可能性がありますが、何をしようとしているのかによっては、とにかく正しいことをすることになります。
"-0" < 0
はfalse
です。これは、-0 < 0
もfalse
であるという事実と一致しています(参照: signed zero )。"-Infinity" < 0
はtrue
です(無限大が確認されます)"-1e0" < 0
はtrue
です(科学表記リテラルが受け入れられます)"-0x1" < 0
はtrue
です(16進リテラルが受け入れられます)" -1 " < 0
はtrue
です(いくつかの形式の空白が許可されます)上記の例のそれぞれについて、正規表現メソッドは逆に評価されます(true
の代わりにfalse
、またはその逆)。
?:
また、この形式のステートメントは次のように言う必要があります。
if (someCondition) {
return valueForTrue;
} else {
return valueForFalse;
}
三項/条件付き?:
演算子( §11.12 )を使用して単純にリファクタリングできます。
return (someCondition) ? valueForTrue : valueForFalse;
?:
を慣用的に使用すると、コードがより簡潔で読みやすくなります。
Javascriptには、さまざまな型変換を実行するために呼び出すことができる関数があります。
次のようなもの:
if (someVariable) {
return true;
} else {
return false;
}
?:
演算子を使用してリファクタリングできます。
return (someVariable ? true : false);
ただし、これを次のようにさらに単純化することもできます。
return Boolean(someVariable);
これは、Boolean
を関数として呼び出し( §15.16.1 )、目的の型変換を実行します。同様に、Number
を関数として呼び出して( §15.17.1 )、数値への変換を実行できます。
function negative(n) {
return n < 0;
}
正規表現は文字列番号に対して正常に機能するはずですが、これはおそらくより高速です。 (上記の同様の回答のコメントから編集、+n
は不要です。
これは古い質問ですが、多くの意見がありますので、更新することが重要だと思います。
ECMAScript 6は関数Math.sign()
をもたらしました。これは、数値の符号(正の場合は1、負の場合は-1)または数値でない場合はNaNを返します。 参照
次のように使用できます。
var number = 1;
if(Math.sign(number) === 1){
alert("I'm positive");
}else if(Math.sign(number) === -1){
alert("I'm negative");
}else{
alert("I'm not a number");
}
次のような単純なものはどうですか?
function negative(number){
return number < 0;
}
* 1
パートは、文字列を数値に変換することです。
ES6では、Math.sign関数を使用して、
1. its +ve no
2. its -ve no
3. its zero (0)
4. its NaN
console.log(Math.sign(1)) // prints 1
console.log(Math.sign(-1)) // prints -1
console.log(Math.sign(0)) // prints 0
console.log(Math.sign("abcd")) // prints NaN