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'は数値 '+'は文字列になる