1. 変換関数:
js には、parseInt() と parseFloat() という 2 つの変換関数が用意されています。前者は値を整数に変換し、後者は値を浮動小数点数に変換します。 String 型でこれらのメソッドを呼び出すことによってのみ、これら 2 つの関数が正しく実行されます。他の型では NaN (Not a Number) が返されます。
parseInt() と parseFloat() は両方とも、文字列が数値であるかどうかを判断する前に、文字列を注意深く分析します。 parseInt() メソッドは、最初に位置 0 の文字をチェックして、それが有効な数値であるかどうかを判断します。そうでない場合、メソッドは NaN を返し、他の操作は実行しません。ただし、文字が有効な数値の場合、メソッドは位置 1 の文字を調べ、同じテストを実行します。このプロセスは、有効な数値ではない文字が見つかるまで継続され、検出された時点で、parseInt() がその文字の前の文字列を数値に変換します。
たとえば、文字列「1234blue」を整数に変換する場合、parseInt() は文字 b を検出すると検出プロセスを停止するため、1234 を返します。文字列に含まれる数値リテラルは数値に正しく変換されるため、文字列「0xA」は数値の 10 に正しく変換されます。ただし、小数点は整数では無効な文字であるため、文字列「22.5」は 22 に変換されます。いくつかの例は次のとおりです。
parseInt("1234blue"); // 1234 を返します
parseInt("0xA") // 10 を返します
parseInt("22.5"); 22
parseInt("blue"); //NaN を返します
parseInt() メソッドには、2 進数、8 進数、16 進数、またはその他の基本文字列を整数に変換できる基本モードもあります。基数は parseInt() メソッドの 2 番目のパラメータで指定されるため、16 進値を解析するには、次のように parseInt() メソッドを呼び出す必要があります。
もちろん、2 進数、8 進数、または 10 進数 (デフォルト モード) の場合は、次のように parseInt() メソッドを呼び出すことができます。
parseInt("10", 2) //returns 2
parseInt ("10", 8); // 8 を返します
parseInt("10", 10); // 10 を返します
10 進数の先頭に 0 が含まれる場合は、基数 10 を使用するのが最善です。誤って 8 進数値を取得しないようにします。例:
parseInt("010"); // 8 を返します
parseInt("010", 8); // 8 を返します
parseInt("010", 10); // 10 を返します🎜 >このコードでは、コードの両方の行が文字列「010」を数値に解析します。コードの最初の行は、この文字列を 8 進数値として扱い、コードの 2 行目 (基数 8 を宣言) と同じ方法で解析します。コードの最後の行では基数 10 を宣言しているため、iNum3 は最終的に 10 になります。
parseFloat() メソッドは parseInt() メソッドに似ています。このメソッドは、位置 0 から最初の無効な文字が見つかるまで各文字を調べ、その文字の前の文字列を数値に変換します。ただし、このメソッドの場合、最初の小数点は有効な文字です。小数点が 2 つある場合、2 番目の小数点は無効とみなされ、parseFloat() メソッドはこの小数点より前の文字列を数値に変換します。これは、文字列「22.34.5」が 22.34 として解析されることを意味します。
parseFloat() メソッドを使用する場合のもう 1 つの違いは、文字列が浮動小数点数を 8 進数または 16 進数形式ではなく 10 進数形式で表す必要があることです。
メソッドは先頭の 0 を無視するため、8 進数 0908 は 908 として解析されます。 16 進数 0xA の場合、x は浮動小数点数では有効な文字ではないため、メソッドは NaN を返します。さらに、parseFloat() には基本モードがありません。
次に、parseFloat() メソッドの使用例を示します。
parseFloat("1234blue") //1234.0 を返します
parseFloat("0xA") //NaN を返します
; parseFloat(" 22.5"); // 22.5 を返します
parseFloat("22.34.5"); // 22.34 を返します
parseFloat("0908") // 908 を返します
parseFloat("blue"); ; // NaN を返します
2. 強制的な型変換
変換された値の型を処理するために型キャストを使用することもできます。特定の値にアクセスするには、それが別の型であっても、キャストを使用します。
ECMAScript で使用できるキャストの 3 つのタイプは次のとおりです。
Boolean(value) - 指定された値をブール型に変換します。
Number(value) - 指定された値を数値に変換します。整数または浮動小数点数);
String(value) - 指定された値を文字列に変換します。
これら 3 つの関数のいずれかを使用して値を変換すると、元の値から直接変換された値を格納する新しい値が作成されます。これにより、予期せぬ結果が生じる可能性があります。
Boolean() 関数は、変換される値が文字列、ゼロ以外の数値、または少なくとも 1 つの文字を含むオブジェクトである場合に true を返します (これについては次のセクションで説明します)。値が空の文字列、数値 0、未定義、または null の場合は、false を返します。
次のコード スニペットを使用して、ブール型変換をテストできます。
Boolean(""); //false – 空の文字列
Boolean("hi"); //true – 空でない文字列
Boolean(100);ゼロの数値
Boolean(null); //false - null
Boolean(0); //true - オブジェクト
Number() の強制は、値の一部ではなく値全体を変換する点を除いて、parseInt() および parseFloat() メソッドと似ています。parseInt() メソッドと parseFloat() メソッドは最初の無効な文字の前の文字列のみを変換するため、「4.5.6」は「4.5」に変換されることに注意してください。 Number()、「4.5.6」を使用してキャストすると、文字列値全体を数値に変換できないため、NaN が返されます。文字列値を完全に変換できる場合、Number() は parseInt() メソッドを呼び出すか parseFloat() メソッドを呼び出すかを決定します。次の表は、Number() メソッドがさまざまな値で呼び出された場合に何が起こるかを示しています:
使用結果
Number(false) 0
Number(true) 1
Number(未定義) NaN
数値(null) 0
数値( "5.5 ") 5.5
数値( "56 ") 56
数値( "5.6.7 ") NaN
数値(new Object()) NaN
Number(100) 100
最後のキャスト メソッド String() は、任意の値を文字列に変換できるため、最も単純です。このキャストを実行するには、パラメーターとして渡された値に対して toString() メソッドを呼び出すだけで、1 が "1" に、true が "true" に、false が "false" に変換されます。文字列へのキャストと toString() メソッドの呼び出しの唯一の違いは、null または未定義の値をキャストすると、エラーが発生せずに文字列が生成されることです。
var s1 = String(null);
var oNull = null;
var s2 = oNull.toString(); // 動作せず、エラーが発生します
3. JS 変数の弱い型変換を使用します
小さな例を挙げてみましょう。見ればわかります。
上記の例は、js の弱い型の特性を利用し、算術演算のみを実行して文字列から数値への型変換を実現します。ただし、この方法は推奨されません。 //オブジェクトを文字に変換します
function object2String(obj) {
var val, Output = ""
if (obj) {
output = "{ ";
for (var i in obj) {
val = obj[i];
switch (typeof val) {
case ("object"):
if (val[0 ]) {
出力 = i ":" array2String(val) ",";
} else {
出力 = i ":" object2String(val) ",";
ブレーク;
case ("string"):
出力 = i ":'" val "',";
デフォルト:
出力 = i ":" val ", ";
}
}
output = Output.substring(0, Output.length-1) "}";
}
出力を返す;
}
配列を文字列に変換します function array2String(array) {
var Output = "";
if (array) {
output = "["; (配列内の変数 i) {
val = array[i];
switch (typeof val) {
case ("オブジェクト"):
if (val[0]) {
出力 = array2String(val) ",";
} else {
output = object2String(val) ",";
case ("string"):
output = "'" encodeURI(val) "',";
break;
default:
output = val ",";
}
}
output = 出力substring(0, Output.length-1) "]";
}
出力を返す
関数 string2Object(string) {
("var result = " decodeURI(string));
return result;
function string2Array(string) {
eval("var result = " decodeURI(string));
return result;
}
日付型を js の文字列形式に変換します