如何在JavaScript中访问对象参数
我试图弄清楚如何正确解析linkedIn JavaScript API返回的一些值 目前,我正在使用以下代码循环并打印返回的对象如何在JavaScript中访问对象参数,javascript,linkedin,Javascript,Linkedin,我试图弄清楚如何正确解析linkedIn JavaScript API返回的一些值 目前,我正在使用以下代码循环并打印返回的对象 for(var position in profile.positions) { profHTML = profHTML + profile.positions[position]; } 结果是(这让我部分了解了这一点): 11[object Object],[object Object],[object Object],[object Object],[
for(var position in profile.positions)
{
profHTML = profHTML + profile.positions[position];
}
结果是(这让我部分了解了这一点):
11[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
本质上是对象的#(这似乎是返回的第一个对象),然后是每个对象
根据我在Chrome中登录控制台时返回的内容,此代码返回一个包含名为“company”的对象的对象数组。company包含4个属性(“id”、“industry”、“name”、“type”)
我收集了这个概要文件。positions[position]是对返回元素的引用,但是我不确定在循环时访问company对象和属性的语法
我也不确定什么是避免在返回对象数量的第一个循环中引用字段的最佳实践
提前感谢您的帮助。要开始,请使用a而不是a来迭代数组
var positions = profile.positions,
position;
for(var i=0; i<positions.length; i++)
{
position = positions[i];
profHTML = profHTML + position;
}
你能给出返回的完整JSON输出吗?很难准确推断出你所描述的结构。另外,在数组的循环中不要使用
for
-:我如何提供返回的完整JSON输出?我很乐意发布。将其粘贴到问题中……好的,多梅尼克我在反馈的帮助下尝试了几种变体在这里。此代码可以获取特定字段:profile.positions.values[0].company.idI我不认为它是数组,数组的.length
不可枚举。它可能是自定义创建的类似数组的对象(例如{0:0,length:1}
)。虽然应该使用for
循环,但这一点仍然适用。此外,请记住始终缓存数组的长度,而不是每次迭代都访问它。这似乎没有多大区别,但确实如此。请参阅以获取证据。根据我链接到的jsPerf测试的统计数据,缓存数组的长度只会更慢一个或两个特定版本的浏览器,而且不会太多。更可能的结果是,对于大多数浏览器来说,它会更快。我同意,它没有(in)
的和(var I)的之间的区别那么重要
,但如果您将其包含在示例代码中,则有助于鼓励最佳实践,IMHO.IMO缓存长度
是一种模糊代码的微观优化。
var positions = profile.positions,
company;
for(var i=0; i<positions.length; i++)
{
company = positions[i].company;
console.log(company.id, company.industry, company.name, company.type);
}