我很高兴这里已经有一些关于如何识别数组的问题。但是,我找不到任何有关识别对象数组中的数组的信息。
给定以下数组:
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]
有没有办法正确识别该属性是一个数组,还是我误解了什么?
最佳答案
对于这个答案,我假设您正在使用 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))
}
关于JavaScript - 将对象数组中的属性识别为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18189767/