0

Facebook API呼び出しからの応答をJavascript配列に格納する方法を知りたいと思います。Facebook Graph 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'は、配列内の各要素の「名前」と「ID」の性質を持っているデータセットを返しますが、私は興味配列の "id"部分を格納する際に使用します。

上記のコードは、呼び出しの応答を繰り返し、配列の各行にあるuser.idをチェックし、console.logにその行のIDを示します。つまり、var grabbedarrayがコンソールに複数回表示され、毎回異なるIDが表示されます。私はなぜこれが起こっているのか理解していますが、すべてのIDを1つの配列に格納しようとしています。その後、console.logにしたいと思います。

だから、コンソールの最終的な結果は次のようなものでなければなりません:私は、応答はIDのリストだけが表示されますことを期待してFB.api('/MYAPPID/scores/?fields=user.id'への呼び出しを変更しようとしましたが、それは働いていない

[456345624, 256456345, 253456435727, 376573835, 2652453245] 

この問題を解決する方法はありますか? ありがとうございます!

答えて

2

あなたが使っていたアプローチを維持するために、見つけた新しい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); 
}) 
+0

こんにちは@irkeninvaderあなたの答えに感謝!あなたが与えた最初の答えは完璧に機能していました。私は、ブラウザ間の互換性の観点から、あなたの2つの方法のうちのどれが最善のものだろうと思っていましたか?つまり、 '' push'メソッドと同じくらい多くのブラウザバージョンで '' map''がサポートされていますか?再度、感謝します! – Emily

+0

'map'はIE8ではサポートされていなかったので、IE9 +と他のすべてのブラウザはそれをサポートしなければなりません。最初のアプローチに何も問題はないが、心配している場合は! – IrkenInvader

+0

華麗な、ありがとう! :) – Emily

関連する問題