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

数组是对象。要测试一个特定的对象是否是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 的 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
于 2013-02-27T19:18:38.747 回答
0

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

$.isArray(myArray);
于 2013-02-27T19:20:22.683 回答
0
if Object.prototype.toString.call(myObject) == "[object Array]" {
    // ...
}
于 2013-02-27T19:14:51.153 回答