2017-07-10 9 views
1

私はnodejsを初めて使っているので、x軸上の日付とy軸上の点を含む配列を分割し、データを格納する配列を使ってグラフを描画する必要がありますnodejsの配列を等号に分割する方法

:それは日付を終了するには、開始日からすべての日付を格納します
while(startDate <= endDate) 
{ 
    arr.push({x:startDate.toISOString().slice(0,10),y: 0}); 
    startDate.setDate(startDate.getDate() + 1); 
} 

は今、私は私が見つける午前週間で週に分割する必要があります。xとy軸のために私はこれをやっていることを行うには
var Weeks = Math.round((endDate - startDate)/(7 * 24 * 60 * 60 * 1000)); 

ここで何時になるのですか?

for (var i = doc.length - 1; i >= 0; i--) { 
    for (var j = arr.length - 1; j >= 0; j--) { 
     if (arr[j].x == doc[i].deal_end_date) { 
      arr[j].y ++; 
      } 
     }  
    } 
} 

今、これは以下のように私の出力が得られます:今、私は週にすなわちARRこの配列を分割する必要が

startDate: 2017-07-10, endDate: 2017-07-31 


arr : 
[ { x: '2017-07-10', y: 1 }, 
     { x: '2017-07-11', y: 0 }, 
     { x: '2017-07-12', y: 0 }, 
     { x: '2017-07-13', y: 0 }, 
     { x: '2017-07-14', y: 0 }, 
     { x: '2017-07-15', y: 1 }, 
     { x: '2017-07-16', y: 0 }, 
     { x: '2017-07-17', y: 0 }, 
     { x: '2017-07-18', y: 0 }, 
     { x: '2017-07-19', y: 0 }, 
     { x: '2017-07-20', y: 0 }, 
     { x: '2017-07-21', y: 0 }, 
     { x: '2017-07-22', y: 0 }, 
     { x: '2017-07-23', y: 0 }, 
     { x: '2017-07-24', y: 0 }, 
     { x: '2017-07-25', y: 0 }, 
     { x: '2017-07-26', y: 0 }, 
     { x: '2017-07-27', y: 0 }, 
     { x: '2017-07-28', y: 0 }, 
     { x: '2017-07-29', y: 0 }, 
     { x: '2017-07-30', y: 0 }, 
     { x: '2017-07-31', y: 0 } ] 

と 私は

var i,j,temparray,chunk = Weeks; 
for (i=0,j=arr.length; i<j; i+=chunk) { 
    temparray = arr.slice(i,i+chunk); 
} 

を試みたが、それはtemparrayに保存しますとして:

temparray: [ { x: '2017-07-31', y: 0 } ] 

と私はbとして私のtemparrayが必要ですELOW:

startDate: 2017-07-01 endDate: 2017-07-28 
Weeks: 4 
/*temparray[1] should be from arr[0] to arr[6]*/ 
temparray[1] : 
[ { x: '2017-07-01', y: 0 }, 
    { x: '2017-07-02', y: 0 }, 
    { x: '2017-07-03', y: 0 }, 
    { x: '2017-07-04', y: 0 }, 
    { x: '2017-07-05', y: 1 }, 
    { x: '2017-07-06', y: 0 }, 
    { x: '2017-07-07', y: 0 }] 
/*temparray[2] should be from arr[7] to arr[13]*/ 
temparray[2] : 
[ { x: '2017-07-08', y: 0 }, 
    { x: '2017-07-09', y: 0 }, 
    { x: '2017-07-10', y: 0 }, 
    { x: '2017-07-11', y: 0 }, 
    { x: '2017-07-12', y: 0 }, 
    { x: '2017-07-13', y: 0 }, 
    { x: '2017-07-14', y: 0 }] 
/*temparray[3] should be from arr[14] to arr[20]*/ 
temparray[3] : 
[ { x: '2017-07-15', y: 0 }, 
    { x: '2017-07-16', y: 0 }, 
    { x: '2017-07-17', y: 0 }, 
    { x: '2017-07-18', y: 0 }, 
    { x: '2017-07-19', y: 0 }, 
    { x: '2017-07-20', y: 0 }, 
    { x: '2017-07-21', y: 0 }] 
/*temparray[4] should be from arr[21] to arr[27]*/ 
temparray[4] : 
[ { x: '2017-07-22', y: 0 }, 
    { x: '2017-07-23', y: 0 }, 
    { x: '2017-07-24', y: 0 }, 
    { x: '2017-07-25', y: 0 }, 
    { x: '2017-07-26', y: 0 }, 
    { x: '2017-07-27', y: 0 }, 
    { x: '2017-07-28', y: 0 }] 

答えて

1

fillmapを使用したソリューション:私はちょうど行う@Albertoトリンダーデタバレスで答えたよう

function splitArray(array, chunkSize) { 
 
    return Array(Math.ceil(array.length/chunkSize)).fill().map(function(_,i) { 
 
    return array.slice(i * chunkSize, i * chunkSize + chunkSize); 
 
    }); 
 
} 
 

 
var results = splitArray([1,2,3,4,5,6,7,8], 3); 
 
console.log(results);

あなたは日付

+0

thanks man it worked +1 –

1

を使用するように適応させることができますそれによって:

/* arr is my original array */ 
var ressu = splitArray(arr, 7); 

function splitArray(arr, chunkSize) { 
    return Array(Math.ceil(arr.length/chunkSize)).fill().map(function(_,i) { 
    return arr.slice(i * chunkSize, i * chunkSize + chunkSize); 
    }); 
} 
関連する問題