2017-07-20 12 views
2

d3を使用していて、配列の日付を比較しようとしています。私はそれの最小と最大を取得したい。Javasccript(D3) - 日付比較はNaNを返します

以下は私のデータセットです。

var data = [{ "date": "2016.07.19", "close": 185697.89 }, { "date": "2016.07.20", "close": 185697.89 }, { "date": "2016.07.21", "close": 186601.1 }, { "date": "2016.07.22", "close": 187273.89 }, { "date": "2016.07.25", "close": 186807.74 }]; 

以下は私が「分」変数を印刷するとき、それは「NaNでの」印刷

max_x = 0, max_y = 0, min = 100; 


    for (i = 0; i < data.length; i++) { 
     max_y = Math.max(max_y, data[i].close); 
     max_x = Math.max(max_x, data[i].date); 
     min = Math.min(min, data[i].date); 
    } 

で問題を有していコードセグメントです。

これは他のコードに影響しています。

誰かが間違っている箇所を指摘できますか? 日付比較を行う他の方法はありますか?

+1

プロパティ 'date'と' close'を設定し、プロパティ 'number'と' class'を呼び出していますか? – icecub

+0

申し訳ありません。それは間違いでした。私はコードを編集しました。これで、私がテストしたコードを見ることができます。 – ashani123

+0

'date'は文字列であり、数字ではありません – Andreas

答えて

2

dateの値は文字列です。あなたはそれらを解析する必要があります。その後

var parse = d3.timeParse("%Y.%m.%d"); 

を、あなたはd3.extentd3.maxまたはそれらの両方で、d3.minで最大値を最小値を取得することができます。ここで

はデモです:

var data = [{ "date": "2016.07.19", "close": 185697.89 }, { "date": "2016.07.20", "close": 185697.89 }, { "date": "2016.07.21", "close": 186601.1 }, { "date": "2016.07.22", "close": 187273.89 }, { "date": "2016.07.25", "close": 186807.74 }]; 
 

 
var parse = d3.timeParse("%Y.%m.%d"); 
 

 
var extent = d3.extent(data.map(function(d){ return parse(d.date)})) 
 

 
console.log("Minimum: " + extent[0]) 
 
console.log("Maximum: " + extent[1])
<script src="https://d3js.org/d3.v4.min.js"></script>

+0

PS:タイトルと最初の段落に記載されている質問にのみ回答しています(* "私はd3を使用しています配列内の日付を比較することができます。最小値と最大値を取得したいのです」。あなたのスニペットで何をしたいのか分かりません。質問ごとに問題を1つだけ質問し、それを特定のものにしてください。 –

0

あなたはプロパティが[ "2016年7月19日"、 "2016年7月20日" などdateArrとして、個別に近い二つの配列に日付と置くことができます、 "2016.07.21"]、closeArr [185697.89,186601.1,187273.89]、それらをascでソートすると、arrayの最初の項目は最小値であり、最後の項目は最大値です。