var x = 100; var y = [10, 20]; var z = [[1, 2], [3, 4]]; if (x[0] != null) alert("true"); else alert("false"); // false 配列ではない スカラー if (y[0] != null) alert("true"); else alert("false"); // true if (z[0] != null) alert("true"); else alert("false"); // true if (y[0][0] != null) alert("true"); else alert("false"); // false 2次元配列ではない 1次元ベクトル if (z[0][0] != null) alert("true"); else alert("false"); // true 2次元配列
次のような変数があります。
var スカラー = 12; var 一次元配列 = [ 10,20,30 ]; var 二次元配列 = [ [ 0, 1, 2], [10,11,12] ];
変数がスカラーか配列かは、Array.isArray(変数) で判別できます。
実際には、次の関数にします。
funciton 配列判別(変数) { if (Array.isArray(変数) == false) var 型 = 'スカラー'; else if (Array.isArray(変数[0]) == false) 型 = '一次元配列'; else 型 = '二次元配列'; return 型; }
function 数値文字列判別(変数) { var 正規表現 = /^[+,-]?([1-9]\d*|0)(\.\d+)?$/; if (正規表現.test(変数)) var 型 = "数値"; else 型 = "文字列"; return 型; }
次のような値を入れてみました。
[ 0, 12, 12.3, // 符号なし数値
+21, -22, // 符号あり
31-32, // 計算してしまう
'', null, , // これらは文字列になる
'+41', '+' ] // '+41'は数値 '+'は文字列になる