Node.js 循环遍历嵌套的 Javascript 对象
Posted
技术标签:
【中文标题】Node.js 循环遍历嵌套的 Javascript 对象【英文标题】:Node.js loop through nested Javascript object 【发布时间】:2017-04-08 11:08:15 【问题描述】:我想拥有来自 Facebook 的帖子和附件,以便创建帖子列表。问题是我想为每个帖子提要将属性:id、消息和任何附件放在一个数组中。我不确定是否需要在数组中迭代对象,或者我是否可以选择 ID 并获取相关信息。
我还使用 async.waterfall() 来获取同步调用,因为我将进行依赖于前一个调用的其他调用。
我试过这个来获取附件的 id、message 和 src url:
var async = require("async");
var graph = require('fbgraph');
async.waterfall([
getFeed,
getPostPicture,
], function (err, result)
);
function getFeed(callback)
graph.get("/.../feed" + "?fields=message,attachments&access_token=APPID|APPSECRET", function(err, res)
callback(null, res);
);
function getPostPicture(arg1, callback)
var feedData = arg1.data;
for(var i in feedData)
var id = feedData[i].id;
var message = feedData[i].message;
var feedAttachment = feedData[i].attachments
for (var j in feedAttachment)
var attachment = feedAttachment.data;
var attachmentURL = attachment[i].src;
for (var j in attachmentURL)
var attachmentURL = feedAttachment.src;
console.log(attachment);
上面会输出:
[ description: 'post message 1',
media: image: [Object] ,
target:
id: '...',
url: 'https://www.facebook.com/.../photos/a............/.../?type=3' ,
title: 'Timeline Photos',
type: 'photo',
url: 'https://www.facebook.com/.../photos/a............/.../?type=3' ]
下面是我第一次在源代码中调用graph.get的响应
我需要 data -> [message, id, attachments -> data[src] ]
"data": [
"message": "post message 1",
"id": "..._...",
"attachments":
"data": [
"description": "picture 1",
"media":
"image":
"height": 256,
"src": "https://scontent.xx.fbcdn.net/v/t1.0-9/..._..._..._n.png?oh=...&oe=...",
"width": 256
,
"target":
"id": "...",
"url": "https://www.facebook.com/.../photos/a............/.../?type=3"
,
"title": "Timeline Photos",
"type": "photo",
"url": "https://www.facebook.com/.../photos/a............./..../?type=3"
]
,
"message": "Test status update 123",
"id": "..._..."
],
"paging":
"previous": "https://graph.facebook.com/v2.8/.../feed?fields=message,attachments&format=json&since=...&access_token=...&limit=25&__paging_token=enc_...&__previous=1",
"next": "https://graph.facebook.com/v2.8/.../feed?fields=message,attachments&format=json&access_token=...&limit=25&until=...&__paging_token=enc_..."
【问题讨论】:
那么console.log(attachment);
是如何为您提供该输出的呢?您确定您的代码粘贴正确吗?请扩展您的代码以更好地显示生成输出的位置。
【参考方案1】:
当你在getPostPicture
函数中使用for循环时,i变量实际上是数组feedData
中的元素,所以你必须i.id
或i.attachments
和i.message
。另外我认为,由于您在 2 个循环中使用相同的 j
,其中一个嵌套在另一个循环中,因此它也无法正常工作,因此您可能还必须更改它,并用您期望的输出类型解释您的问题.
【讨论】:
以上是关于Node.js 循环遍历嵌套的 Javascript 对象的主要内容,如果未能解决你的问题,请参考以下文章