JavaScript - 将对象数组中的属性标识为数组

时间:2013-08-12 14:34:38

标签: javascript arrays

我很欣赏这里有一些关于如何识别阵列的问题。但是,我无法找到有关在对象数组中识别数组的任何内容。

给出以下数组:

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] 

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

2 个答案:

答案 0 :(得分: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))                         
}

答案 1 :(得分:0)

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

http://jsfiddle.net/vVPCA/