检查项目是否为数组

时间:2013-02-27 19:11:10

标签: javascript

我在这里有一个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 个答案:

答案 0 :(得分:0)

if Object.prototype.toString.call(myObject) == "[object Array]" {
    // ...
}

答案 1 :(得分:0)

数组是对象。要测试特定对象是否是Array“类”的实例(我使用该术语松散),请使用instanceof运算符:

if (yourThing instanceof Array) {
    // it is an array
} else {
    // it is not an array
}

答案 2 :(得分:0)

较新的浏览器采用Array.isArray()方法,对于较旧的浏览器,您可以使用MDN的polyfill:

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

用过:

var isArray = Array.isArray(data.Project); // true or false

答案 3 :(得分:0)

如果你使用jQuery,你可以这样做:

$.isArray(myArray);