ブール値 (例: 'true'、'false') を表す文字列を JavaScript の固有型に変換できますか?
リスト内のユーザーの選択に基づいて更新される HTML の隠しフォームがあります。このフォームにはブール値を表すフィールドがいくつか含まれており、固有のブール値が動的に入力されます。ただし、この値が隠し入力フィールドに配置されると、文字列になります。
フィールドのブール値を文字列に変換した後にそのブール値を決定するために私が見つけた唯一の方法は、その文字列表現のリテラル値に依存することでした。
var myValue = document.myForm.IS_TRUE.value;
var isTrueSet = myValue == 'true';
これを実現するより良い方法はありますか?
ベストアンサー1
する:
var isTrueSet = (myValue === 'true');
同一性演算子 ( ===
) を使用します。比較する変数の型が異なる場合でも、暗黙的な型変換は行われません。
文字列が「true」の場合はisTrueSet
ブール値に設定され、文字列が「false」またはまったく設定されていない場合はブール値になります。true
false
大文字と小文字を区別しないようにするには、次を試してください。
var isTrueSet = /^true$/i.test(myValue);
// or
var isTrueSet = (myValue?.toLowerCase?.() === 'true');
// or
var isTrueSet = (String(myValue).toLowerCase() === 'true');
してはいけないこと:
特定のニーズに合わせてこれら 2 つの方法を使用する場合は、注意が必要です。
var myBool = Boolean("false"); // == true
var myBool = !!"false"; // == true
これらを使用すると、空文字列ではない文字列はすべて に評価されますtrue
。ブール値変換に関して私が考えられる最もクリーンな方法ではありますが、探しているものではないと思います。