你好_我的 Javascript 数组问题已经被困扰一个多星期了,我只是不知道如何让它工作。
我正在查询 Facebook 的 Graph API,以便检索 ID 号数组(这些是向当前登录的玩家发送应用请求的人的 ID)。这个数组的棘手之处在于它是一种嵌套数组,这就是我正在处理的:
我正在使用以下查询来查询 Graph API:
'me/apprequests?fields=from,id'
这将返回一个响应,其中包含有关当前登录玩家的详细信息、有关应用程序邀请的发送者的详细信息以及有关应用程序本身的详细信息。
我需要的是发送者的 ID,因此为了深入了解并隔离这些数据,我通过如下定义来指定我想要从查询响应中获得的内容:response.data[0].from。 id;
由于号码是[0]
,这将返回第一个发件人的 ID。
如果我写 response.data[1].from.id;
它会给我第二个发件人的 ID,依此类推。
我的问题是我不知道如何编写这个数组,以便它能够处理任何大小的数组(有时数组中没有ID,有时可能有几十个)。
目前,我正在使用一个帐户进行测试,该帐户已收到来自 3 个不同人的 3 个应用程序邀请,因此数组的长度为 3 个对象。我可以使用以下代码获取这 3 个 ID:
FB.login(function(response) {
if (response.authResponse) {
console.log('Welcome! Fetching your information.... ');
FB.api('me/apprequests?fields=from,id', function(response) {
if (response.error) {
console.log('Error - ' + response.error.message);
}
else {
var requestid = [];
requestid[0] = response.data[0].from.id;
requestid[1] = response.data[1].from.id;
requestid[2] = response.data[2].from.id;
console.log(requestid);
// AJAX to send Array to PHP file for database insert goes here.
这将在控制台中显示 3 个发件人的 3 个不同 ID。我也可以使用以下代码得到相同的结果:
var requestid = [response.data[0].from.id, response.data[1].from.id, response.data[2].from.id];
它们都在控制台中返回此结果:
数组 [ "182375352527", "41142382445744", "10114293842343"]
我的问题是,如何更改此代码,以便它既可以处理没有发件人 ID 的情况,也可以处理有多个 ID 的情况。
现在我的代码之所以能工作,只是因为我正在为 3 个 ID 定义空间,我已经尝试为更多 ID 定义空间(例如 response.data[3].from.id
)但由于没有第四个 ID 号可供检索,因此这不起作用,而是会阻止数组中返回任何内容。
任何有关如何解决此问题的建议将不胜感激!
提前致谢!
最佳答案
我会在 for 循环中执行此操作。像这样的东西:
var requestid = [];
for(var i = 0; i < response.data.length; i++){
requestid.push(response.data[i].from.id);
}
这将使用响应中给出的数据元素数量填充您的 requestid
数组。
关于javascript - Facebook Graph API 中令人困惑的 Javascript 嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30447423/