我很欣赏这里有一些关于如何识别阵列的问题。但是,我无法找到有关在对象数组中识别数组的任何内容。
给出以下数组:
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]
有没有办法正确识别属性是数组还是我误解了什么?
答案 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
工作正常,但你有一个额外的大括号导致语法错误。