2016-07-11 8 views
0

以下のスニペットで助けが必要です。 ゴール:配列をdata.nickに格納し、ハンドルバー(それぞれ別々に表示)に表示する方法は?データを配列に格納してハンドルバーに表示

JS:

function(data, callback){ 
      var URL = 'url'; 
      request(URL, function(err, response, body) { 
       if(response.statusCode == 200){ 
       var json = JSON.parse(body); 
        for(var i = 0; i < json['nick'].length; i++){ 
         var s = []; 
         s = json['nick'][i].id; 
        } 
        data.nick = s; 
        console.log(data.nick); 
        callback(null,data); 
       } 
      }); 
     }, 

問題:sが配列されている間data.nick照会のみ最後のオブジェクトを記憶しています。


編集:固定

アレイは、今の質問は、エクスプレス・ハンドル

私は{{#each info.nick}}{{#list info.nick}}を使用しようとしていた、{{info.nick.[0]}}を使用して、HTMLの各項目を表示する方法でありますそれは動作していません。

私はアレイ[ 432, 3, 104, 222, 30, 11, 62, 421, 17, 412 ]を持っています。私はexpress-handlebarsを使ってそれぞれを表示します。 GEへ

+0

's = json ['nick'] [i] .id'は空の配列を' id'アイテムの値だけで上書きします。そうでない場合でも、すべての反復で配列が空になるようにリセットしておくので、最後の項目だけが表示されます。 –

+0

私はconsole.log(s)を呼び出しました。それは私に10個のオブジェクトを表示しています。 – BaSic

+0

なので、なぜこの質問をしますか? –

答えて

0

あなたは、各ループに空に配列sをresetingています。それと並んで、配列に項目を追加するのではなく、json['nick'][i].idという単一の値で配列を上書きします。だからこそ、最後のアイテムだけが見えているのは、他のアイテムがすべて失われているからです。

... 
var s = []; 
for(var i = 0; i < json['nick'].length; i++){ 
    s.push(json['nick'][i].id); 
} 
data.nick = s; 
... 

data.nick = sは浅いコピーであること:あなたは、forループの前に、あなたの配列を定義し、それに項目を追加するために.push()を使用したいと思うでしょう。

+0

ワーキングも。ハンドルバーを使ってdata.nickの各アイテムをどのように表示するかについてのアイデアはありますか? {{#each info.nick}} {{/ each}}は機能していません – BaSic

0

使用Array.mapのみid属性 :

function(data, callback){ 
      var URL = 'url'; 
      request(URL, function(err, response, body) { 
       if(response.statusCode == 200){ 
        var json = JSON.parse(body); 
        data.nick = json['nick'].map(function(e,i){return e.id}); 
        console.log(data.nick); 
        callback(null,data); 
       } 
      }); 
     }, 
+0

ありがとう、それは働いていますが、2番目の問題はハンドルバーにIDのそれぞれを表示する方法です。 info:dataと私は{{info.nick}}と{{#each info.nick}}にしようとしていますが、動作しません。 – BaSic

関連する問題