2017-06-28 9 views
-2

時刻と日付を一致させたい と結果は各日付の時間の合計でなければなりません... たとえば... 06/27 - 30と90の合計...そうです。 どのように私はその...2つの配列データと一致し、それを得る! (アルゴリズム...?)

var array_date=["2017/06/27","2017/06/26","2017/06/27","2017/06/26","2017/06/28"] 

var array_time=["30","50","90","120","20"] 

var obj = array_date; 
for (var i = 0 in obj) { 
    console.log("rr:"+obj[i]); 
} 

//To filter date I used below method...anyway. 
var cleanArray = displayed_date.filter((value,index,self)=>{ return (self.indexOf(value) === index)}); 

答えて

0

は、あなたが追加をやっているので、まず番号にあなたの文字列を変換するために最善を尽くすことができます。

array_time = array_time.map(t=> +t); 

次に、グループ、日付ごとに時間を合計:

let data = array_date.reduce((acc, d, i)=> { 
    if(acc.hasOwnProperty(d)) acc[d] += array_time[i]; 
    else acc[d] = array_time[i]; 
    return acc; 
}, {}); 

jsfiddle

0

あなたはこのようにそれを行うことができます:

 <script> 
     array_date=["2017/06/27","2017/06/26","2017/06/27","2017/06/26","2017/06/28"]; 

     array_time=["30","50","90","120","20"]; 

     var oData = []; 

     for(var i = 0; i < array_date.length; i++){ 

      if(Object.keys(oData).length > 0){ 
       var icount = 0; 
       for(var x = 0; x < Object.keys(oData).length; x++){ 

       if(oData[x]['date'] == array_date[i]){ 
        oData[x]['sum'] = parseInt(oData[x]['sum']) + parseInt(array_time[i]); 
        icount++; 
       } 
       } 

       if(icount == 0){ 
       var oCreate = {"date":array_date[i], "sum":parseInt(array_time[i])} 

        oData.push(oCreate); 
       } 

      }else{ 
       var oCreate = {"date":array_date[i], "sum":parseInt(array_time[i])} 

       oData.push(oCreate); 
      } 

     } 

     console.log(JSON.stringify(oData)); //oData is the final variable answer here. 

    </script> 

希望します。

関連する問題