混淆 Javascript 来自 Facebook 图表的嵌套数组 API
Confusing Javascript Nested Array from Facebook Graph API
Hello_I 我的 Javascript 阵列出现问题已经一个多星期了,我只是不知道如何让它工作。
我正在查询 Facebook 的图表 API 以检索一组 ID 号(这些是向当前登录玩家发送应用请求的人的 ID)。这个数组的棘手之处在于它是一种嵌套数组,这就是我正在使用的:
我正在使用以下查询查询图表 API:
'me/apprequests?fields=from,id'
此 return 是一个响应,其中包含当前登录玩家的详细信息、应用邀请发件人的详细信息以及应用本身的详细信息。
我需要的是发件人的 ID,因此为了向下钻取和隔离这些数据,我通过如下定义指定了我想要从查询响应中获取的内容:response.data[0].from.id;
因为号码是 [0]
这将 return 第一个发送者的 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];
他们都 return 在控制台中的结果是:
Array [ "182375352527", "41142382445744", "10114293842343" ]
我的问题是,如何更改此代码,使其既能处理没有发件人 ID 的情况,又能处理有多个 ID 的情况。
现在我的代码能正常工作只是因为我为 3 个 ID 定义了 space,我已经尝试为更多 ID 定义 space(例如 response.data[3].from.id
)但是作为没有要检索的第 4 个 ID 号这不起作用,而是阻止任何东西在数组中被 returned。
任何关于如何解决这个问题的建议将不胜感激!
提前致谢!
我会在 for 循环中执行此操作。类似于:
var requestid = [];
for(var i = 0; i < response.data.length; i++){
requestid.push(response.data[i].from.id);
}
这将使用响应中给出的数据元素数量填充您的 requestid
数组。
Hello_I 我的 Javascript 阵列出现问题已经一个多星期了,我只是不知道如何让它工作。
我正在查询 Facebook 的图表 API 以检索一组 ID 号(这些是向当前登录玩家发送应用请求的人的 ID)。这个数组的棘手之处在于它是一种嵌套数组,这就是我正在使用的:
我正在使用以下查询查询图表 API:
'me/apprequests?fields=from,id'
此 return 是一个响应,其中包含当前登录玩家的详细信息、应用邀请发件人的详细信息以及应用本身的详细信息。
我需要的是发件人的 ID,因此为了向下钻取和隔离这些数据,我通过如下定义指定了我想要从查询响应中获取的内容:response.data[0].from.id;
因为号码是 [0]
这将 return 第一个发送者的 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];
他们都 return 在控制台中的结果是:
Array [ "182375352527", "41142382445744", "10114293842343" ]
我的问题是,如何更改此代码,使其既能处理没有发件人 ID 的情况,又能处理有多个 ID 的情况。
现在我的代码能正常工作只是因为我为 3 个 ID 定义了 space,我已经尝试为更多 ID 定义 space(例如 response.data[3].from.id
)但是作为没有要检索的第 4 个 ID 号这不起作用,而是阻止任何东西在数组中被 returned。
任何关于如何解决这个问题的建议将不胜感激!
提前致谢!
我会在 for 循环中执行此操作。类似于:
var requestid = [];
for(var i = 0; i < response.data.length; i++){
requestid.push(response.data[i].from.id);
}
这将使用响应中给出的数据元素数量填充您的 requestid
数组。