gpt4 book ai didi

javascript - 我在使用 Instagram API 时检索的评论返回 'undefined'

转载 作者:行者123 更新时间:2023-12-03 12:23:50 27 4
gpt4 key购买 nike

我正在从

检索数据

https://api.instagram.com/v1/tags/HASHTAG/media/recent?client_id=CLIENT_ID


其中
HASHTAG = 我正在搜索的主题标签
CLIENT_ID = 我的客户 ID
我在检索图片网址和标题时没有遇到任何问题,但是当我尝试获取评论将作为“未定义”返回。
数据存储在名为图片的数组中,因此如果我想获取标准分辨率网址,我只需执行以下操作:

for(i = 0; i < pictures.length; i++){
pictureURL[i] = pictures[i].images.standard_resolution.url;
}

现在我尝试用来检索评论的代码是:

//where 'i' is the index of the pic I'm currently focusing on
for (comment in pictures[i].comments.data) {
alert(comment.text);
//using alert just to see what is being retrieved
}

但问题是警报只显示“未定义”,并且只有在有评论时才显示未定义(我在手机上检查过,如果图片没有评论,则没有警报。如果图片有评论,每条评论有 1 个提醒。
有人可以帮我吗?

最佳答案

pictures[i].comments.data 中的值是一个数组,如/tags/tag-name/media/recent Instagram API docs 中的“Response”部分所示。 :

[{
"type": "image",
...
"comments": {
"data": [{
"created_time": "1296703540",
"text": "Snow",
...
},
{
"created_time": "1296707889",
"text": "#snow",
...
}],
...

如您所见,comments 对象中的 data 属性是一个数组(以 [ 开头)。

您在数组上滥用了 for..in 。 (参见 Why is using "for...in" with array iteration a bad idea? )for..in 循环对象的属性名称comment 的值始终是一个属性名称字符串,它肯定没有 text 属性。

相反,您需要一个简单的 for 循环,因为 pictures[i].comments.data 是一个数组:

for (var j=0; j<pictures[i].comments.data.length; j++) {
var comment = pictures[i].comments.data[j];
alert(comment.text)
}

一个重要的注意事项是,即使 pictures[i].comments.data 是一个非数组对象,您使用 for..in 仍然不会'不太对。您的变量 comment 保存属性名称,并且您需要使用属性访问来获取属性名称引用的:

for (commentKey in pictures[i].comments.data) {
var commentValue = pictures[i].comments.data[commentKey];
alert(commentValue.text)
}

请注意,这可能适用于数组,但是:

  1. 属性名称不能按数字顺序循环
  2. 这将循环遍历数组的所有可迭代属性,而不仅仅是数字索引

关于javascript - 我在使用 Instagram API 时检索的评论返回 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24316453/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com