0

ここに JS リテラル表記の形式のデータがあります。

data = {
    "Project": [
        {
            "Title": "Project1",
            "StartDate": "01/01/2013", 
            "EndDate": "01/07/2013",
            "Status": 1
        },
        {
            "Title": "Project2",
            "StartDate": "01/05/2013",
            "EndDate": "01/15/2013",
            "Status": 2
        }
});


var propV;
function validate(data){
    for(var key in data){
        propV = data[key];
        if(typeof propV === 'array){
            //alert('array')
        }
        else if(type propV === 'date'){
            //alert('date')
        }
        else if(type propV === 'string'){
            //alert('string')
        }
        else if(type propV === 'object'){
            //alert('object')
        }
    }
}

上記のコードでは、配列のアラートが表示されることを期待していました。ただし、オブジェクトに対して警告します。項目が配列かどうかを検出するために JavaScript で使用されるものは何ですか?

同様に、上記と同様のデータがある場合、アイテムが日付かどうかをどのように検出しますか? 今のところ、それをしようとすると、日付も取得されますstring

4

4 に答える 4

0
if Object.prototype.toString.call(myObject) == "[object Array]" {
    // ...
}
于 2013-02-27T19:14:51.153 に答える
0

配列はオブジェクトです。特定のオブジェクトがArray「クラス」のインスタンスであるかどうかをテストするには (私はこの用語を大まかに使用しています)、次のinstanceof演算子を使用します。

if (yourThing instanceof Array) {
    // it is an array
} else {
    // it is not an array
}
于 2013-02-27T19:18:29.470 に答える
0

新しいブラウザーにはArray.isArray()メソッドがあり、古いブラウザーでは MDN のポリフィルを使用します。

if(!Array.isArray) {
  Array.isArray = function (vArg) {
    return Object.prototype.toString.call(vArg) === "[object Array]";
  };
}

次のように使用されます:

var isArray = Array.isArray(data.Project); // true or false
于 2013-02-27T19:18:38.747 に答える
0

jQuery を使用する場合は、次のことができます。

$.isArray(myArray);
于 2013-02-27T19:20:22.683 に答える