2017-10-20 9 views
0

お互いに関連する2つの配列があります。 Array Aは週間の日付を、Array Bは週の価格を保持します。毎週金曜日に新しいデータがAPIを介してリリースされ、これらの配列にプッシュされるため、いくつかの月は5つの要素(つまり1月)を持ち、いくつかの月は4つの要素しか持たない(つまり2月)以下の例を参照してください。Javascriptおよび/またはjQueryを使用して毎週から毎月のデータに変換します。

Array A

["2003-01-03", "2003-01-10", "2003-01-17", "2003-01-24", "2003-01-31", "2003-02-07", "2003-02-14", "2003-02-21", "2003-02-28", etc..] 

Array B

["5.85", "5.95", "5.97", "5.91", "5.90", "5.88", "5.86", "5.84", "5.79", etc..] 

コード:

var ajx = $.getJSON(api, function(data) {     
    for (var i =0; i <= data.count -1; i++){ 
     $("#table").append("<tr> <td>" + data.observations[i].date + "</td> <td>" + data.observations[i].value + "</td> </tr>"); 
     xaxis.push(data.observations[i].date) //Array A - weekly (default state) 
     yaxis.push(data.observations[i].value) //Array B - weekly (default state) 
     } 

どのように私は、 "月刊" AND "毎年恒例の" 配列にこれを変換することができるだろうか?

+1

彼らは動作しなかった理由を試みたソリューション、および期待される結果を記載してください。それは本当にあなたのコードの問題を理解するのに役立ちます。ありがとう! –

+0

2つの配列はどのようにマップされていますか?配列A(月)は価格配列にどのようにマップされますか? APIからの情報を使用してjson配列を作成するのは理にかなっていませんか? –

+0

配列には1年のデータしか含まれていませんか? –

答えて

2

array#reduceを使用すると、年に基づいてデータをグループ化することができ、毎年の価格で各月の価格を集計することができます。

const arrayA = ["2003-01-03", "2003-01-10", "2003-01-17", "2003-01-24", "2003-01-31", "2003-02-07", "2003-02-14", "2003-02-21", "2003-02-28"], 
 
     arrayB = ["5.85", "5.95", "5.97", "5.91", "5.90", "5.88", "5.86", "5.84", "5.79"]; 
 

 
let result = arrayA.reduce(function(res, date, index){ 
 
    let [year, month, day] = date.split('-'); 
 
    let price = arrayB[index]; 
 
    if(year in res){ 
 
    if(month in res[year]) { 
 
     res[year][month].price = 
 
      ((res[year][month].price * res[year][month].count) + +price)/(res[year][month].count+1); 
 
     res[year][month].count += 1; 
 
     
 
    } else { 
 
     res[year][month] = {price : +price, count : 1}; 
 
    } 
 
    } else { 
 
    res[year] = {[month]: {price : +price, count :1}}; 
 
    } 
 
    return res; 
 
}, Object.create(null)); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

価格の値を追加したと思います。月間平均である必要があります。 – user3062459

+0

私は価格を追加しました。あなたは毎月の平均価格を求めていますか? –

+0

はいよ..... – user3062459

関連する問題