2017-03-23 11 views
0

JSONとAjaxを使用してデータを取り込みます。私は様々な為替レートでレートオブジェクトを持っています。2つのJSONオブジェクトを分割して別々に追加する方法

私がしたいことは、オブジェクトを半分に分割し、各半分を個別にdivに追加することです。私はJSONオブジェクトを分割する方法を理解できないようです。

私は私のコードのスニペットを取り付け、問題領域でコメントを問題領域をマークしています。私はJSONデータファイルへのリンクも含んでいます。

CODE:

var str = $.getJSON('http://api.fixer.io/latest?base=ZAR', { 
 
    action: "query" 
 
    , list: "search" 
 
    , format: "json" 
 
, }, 
 
    
 
    function (data) { 
 
    var baseCurr = data.base; 
 
    var baseDate = data.date; 
 
    
 
    $('#curr-cont').append('<div class="base row1" id="row1"><div class="base flag" id="flag"><i class="famfamfam-flag-za"></i></div><div class="base country-name"><p class="c-name" id="count-name">' + baseCurr + '</p></div><div class="base currency"><p class="c-amount" id="curr">' + baseDate + '</p></div></div>'); 
 
    
 
    $.each(data.rates, function (i, item) { 
 
     var amount = [item]; 
 
     var name = [i]; 
 
     var maxLength = 4; 
 
     var string = amount.toString(); 
 
     string = string.substr(0, maxLength); 
 
     // amount = amount.substr(0, maxLength); 
 
     $('#curr-cont').append('<div class="row1" id="row1"><div class="flag" id="flag"><i class="famfamfam-flag-' + name + '"></i></div><div class="country-name"><p class="c-name" id="count-name">' + name + '</p></div><div class="currency"><p class="c-amount" id="curr">' + string + '</p></div></div>'); 
 

 
     //***Problem Area** I am trying to count the objects in the array and then halve it, this is probably wrong approach 
 

 
     var count = Math.ceil(Object.keys(data.rates).length/2); 
 
     console.log(count); 
 
    }); 
 
    
 
    
 
});

JSON data file

+0

値&キーを取得2つの部分に連想配列を分割するロジックがあります。次に '.each()'の内部で比較できます。 'if(i Twisty

+0

問題は、各ループのmy iパラメータがレートの名前に割り当てられていることです。私はカウント/比較する別のインデックスパラメータを追加するか分からない。 –

+0

したがって、レートアレイを半分に分割するだけでいいですか? – lascort

答えて

0

あなたは正しい軌道に乗ってほとんどだった - すべてのdata.rateseach内のこのロジックを持つことが少し奇妙なようだが。以下は、私はあなたが `.each()`の前にキーの長さを取得することをお勧め

var data = {"base":"ZAR","date":"2017-03-22","rates":{"AUD":0.10349,"BGN":0.14369,"BRL":0.24601,"CAD":0.10622,"CHF":0.078716,"CNY":0.54686,"CZK":1.9852,"DKK":0.54641,"GBP":0.063765,"HKD":0.61677,"HRK":0.54432,"HUF":22.714,"IDR":1058.3,"ILS":0.29021,"INR":5.1943,"JPY":8.8215,"KRW":88.906,"MXN":1.5201,"MYR":0.35154,"NOK":0.67198,"NZD":0.1128,"PHP":3.9874,"PLN":0.31457,"RON":0.33495,"RUB":4.603,"SEK":0.69874,"SGD":0.111,"THB":2.7496,"TRY":0.28768,"USD":0.079399,"EUR":0.07347}} 
 

 
var keys = Object.keys(data.rates); 
 
var half = Math.ceil(keys.length/2); 
 
for(var i = 0;i<half;i++) 
 
    console.log("First half", keys[i], data.rates[keys[i]]); 
 
    
 
for(var i =half;i<keys.length;i++) 
 
    console.log("Second half", keys[i], data.rates[keys[i]]);

+0

あなたの返信ありがとう!これはうまくいった。私は助けに感謝します:D –