1

入力は配列とオブジェクトのみです。変数が配列かオブジェクトかを判断できる簡単な関数はありますか?

4

4 に答える 4

3

他にも同様の答えがたくさんあると思いますが、これは1つの方法です:

if ({}.toString.call(obj) == '[object Object]') {
  // is an object
}

if ({}.toString.call(obj) == '[object Array]') {
  // is an array
}

これは気の利いた関数に変えることができます:

function typeOf(obj) {
  return {}.toString.call(obj).match(/\w+/g)[1].toLowerCase();
}

if (typeOf(obj) == 'array') ...

これはどのタイプでも機能します。

if (typeOf(obj) == 'date') // is a date
if (typeOf(obj) == 'number') // is a number
...
于 2013-04-16T04:17:33.743 に答える
1

(variable instanceof Array)配列の場合は true を返します。

も使用できますvariable.isArray()が、これは古いブラウザではサポートされていません。

于 2013-04-16T04:21:31.603 に答える
1

使用できますArray.isArray()

if(Array.isArray(myVar)) {
    // myVar is an array
} else {
    // myVar is not an array
}

どちらか一方になることがわかっている限り、設定は完了です。typeofそれ以外の場合は、これを次と組み合わせます。

if(typeof myVar === "object") {
    if(Array.isArray(myVar)) {
        // myVar is an array
    } else {
        // myVar is a non-array object
    }
}
于 2013-04-16T04:21:47.053 に答える
1

最初にそれがインスタンスの配列であるかどうかを確認し、次にオブジェクト型であるかどうかを確認します。

if(variable instanceof Array)
{
//this is an array. This needs to the first line to be checked 
//as an array instanceof Object is also true

}
else if(variable instanceof Object)
{
//it is an object
}
于 2013-04-16T04:21:58.510 に答える