如何将Facebook Graph API响应存储为Javascript数组

How to store a Facebook Graph API response as a Javascript Array?

本文关键字:存储 Javascript 数组 响应 API Facebook Graph      更新时间:2023-09-26

我想知道如何将来自Facebook API调用的响应存储到Javascript数组中。

这是我打的电话:

FB.api('/MYAPPID/scores/?fields=user', function(response) {
for (var i = 0; i < response.data.length; i++){
var grabbedarray = response.data[i].user.id;
console.log(grabbedarray);
}
})

调用FB.api('/MYAPPID/scores/?fields=user'为数组中的每个元素返回一个具有"name"answers"id"属性的数据集,但我只对存储数组的"id"部分感兴趣。

上面的代码遍历调用的响应,它检查数组的每一行中的user.id,然后console.log显示该行的id。这意味着var grabbedarray在控制台中出现多次,每次都显示不同的id。我理解为什么会发生这种情况,但我正在尝试将所有ID存储到一个数组中,然后我想console.log。

因此控制台中的最终结果应该是:

[456345624, 256456345, 253456435727, 376573835, 2652453245] 

我曾尝试将调用更改为FB.api('/MYAPPID/scores/?fields=user.id',希望响应只显示id列表,但它不起作用。

有人知道如何解决这个问题吗?提前谢谢!

为了保持您使用的方法,您可以将找到的每个新id推送到您在for循环之外定义的数组中。

var idArray = [];    
FB.api('/MYAPPID/scores/?fields=user', function(response) {
  for (var i = 0; i < response.data.length; i++){
    idArray.push(response.data[i].user.id);    
  }
  console.log(idArray);
})

您还可以使用map将响应数组转换为您想要的内容。

var idArray = [];
FB.api('/MYAPPID/scores/?fields=user', function(response) {
  idArray = response.data.map(function(x){ return x.user.id });
  console.log(idArray);
})