2

我很感激这里已经有一些关于如何识别数组的问题。但是,我找不到任何关于在对象数组中识别数组的内容。

给定以下数组:

var pagesArray = [{
   category: 'pages1',
   pages: [
       'firstPage1',
       'secondPage1',
       'thirdPage1',
       'fourthPage1']
   }
}];

我试图循环并确定这pages也是一个像这样的数组:

编辑

实际上o,在下一个示例中应该是pagesArray,但我将其保留原样,以便答案有意义。

for(var p in o){     
    console.log(typeof p);
    console.log(p instanceof Array)
    console.log(Object.prototype.toString.call(p))                         
}    

返回的输出为pages

string 
false 
[object String] 

有没有办法正确识别该属性是一个数组还是我误解了什么?

4

2 回答 2

3

对于这个答案,我假设您正在使用for..in循环来迭代内部对象的属性pagesArray,即pagesArray[0].

for..in迭代,而不是值。键始终是字符串,因此在您的循环中,p始终是字符串(此处为"categories"、 或"values")。要获取与键关联的值,请使用o[p]. 您想测试是否o["pages"]为数组,而不是字符串"pages"是否为数组。

for(var p in o){
    var value = o[p];

    console.log(typeof value);
    console.log(value instanceof Array)
    console.log(Object.prototype.toString.call(value))                         
}
于 2013-08-12T14:42:15.080 回答
0

pagesArray[0].pages instanceof Array工作正常,虽然你有一个额外的花括号导致语法错误。

http://jsfiddle.net/vVPCA/

于 2013-08-12T14:38:20.940 回答