混淆 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 数组。