2015-07-13 60 views
0

下面我有數組,我想創建陣列的另一個數組對象的數組。下面是我的數組如何創建angularjs或JavaScript

$scope.data2 = 
       [  
        {"dt":"07 Jul 2015","avgdelay":"10","code_sent_time":"07 Jul 2015 12:30 PM","reply_received_time":"07 Jul 2015 12:40 PM","time_diff":10}, 
        {"dt":"07 Jul 2015","avgdelay":"10","code_sent_time":"07 Jul 2015 02:10 AM","reply_received_time":"07 Jul 2015 02:30 AM","time_diff":20 }, 
        {"dt":"07 Jul 2015","avgdelay":"10","code_sent_time":"07 Jul 2015 03:10 AM","reply_received_time":"07 Jul 2015 03:15 AM","time_diff":5 }, 
        {"dt":"07 Jul 2015","avgdelay":"10","code_sent_time":"07 Jul 2015 04:45 AM","reply_received_time":"07 Jul 2015 05:00 AM","time_diff":15 }, 
        {"dt":"08 Jul 2015","avgdelay":"20","code_sent_time":"08 Jul 2015 12:30 PM","reply_received_time":"08 Jul 2015 12:40 PM","time_diff":35}, 
        {"dt":"08 Jul 2015","avgdelay":"20","code_sent_time":"08 Jul 2015 02:10 AM","reply_received_time":"08 Jul 2015 02:30 AM","time_diff":42 }, 
        {"dt":"08 Jul 2015","avgdelay":"20","code_sent_time":"08 Jul 2015 03:10 AM","reply_received_time":"08 Jul 2015 03:15 AM","time_diff":5 }, 
        {"dt":"08 Jul 2015","avgdelay":"20","code_sent_time":"08 Jul 2015 04:45 AM","reply_received_time":"08 Jul 2015 05:00 AM","time_diff":5 }, 
        {"dt":"09 Jul 2015","avgdelay":"30","code_sent_time":"09 Jul 2015 12:30 PM","reply_received_time":"09 Jul 2015 12:40 PM","time_diff":1}, 
        {"dt":"09 Jul 2015","avgdelay":"30","code_sent_time":"09 Jul 2015 02:10 AM","reply_received_time":"09 Jul 2015 02:30 AM","time_diff":28}, 
        {"dt":"09 Jul 2015","avgdelay":"30","code_sent_time":"09 Jul 2015 03:10 AM","reply_received_time":"09 Jul 2015 03:15 AM","time_diff":12}, 
        {"dt":"09 Jul 2015","avgdelay":"30","code_sent_time":"09 Jul 2015 04:45 AM","reply_received_time":"09 Jul 2015 05:00 AM","time_diff":17}, 
        {"dt":"10 Jul 2015","avgdelay":"10","code_sent_time":"10 Jul 2015 12:30 PM","reply_received_time":"10 Jul 2015 12:40 PM","time_diff":19},   
        {"dt":"10 Jul 2015","avgdelay":"10","code_sent_time":"10 Jul 2015 02:10 AM","reply_received_time":"10 Jul 2015 02:30 AM","time_diff":21}, 
        {"dt":"10 Jul 2015","avgdelay":"10","code_sent_time":"10 Jul 2015 03:10 AM","reply_received_time":"10 Jul 2015 03:15 AM","time_diff":15}, 
        {"dt":"10 Jul 2015","avgdelay":"10","code_sent_time":"10 Jul 2015 04:45 AM","reply_received_time":"10 Jul 2015 05:00 AM","time_diff":15}, 
        {"dt":"11 Jul 2015","avgdelay":"10", "code_sent_time":"11 Jul 2015 12:30 PM","reply_received_time":"11 Jul 2015 12:40 PM","time_diff":39},  
        {"dt":"11 Jul 2015","avgdelay":"10", "code_sent_time":"11 Jul 2015 02:10 AM","reply_received_time":"11 Jul 2015 02:30 AM","time_diff":7}, 
        {"dt":"11 Jul 2015","avgdelay":"10", "code_sent_time":"11 Jul 2015 03:10 AM","reply_received_time":"11 Jul 2015 03:15 AM","time_diff":9}, 
        {"dt":"11 Jul 2015","avgdelay":"10", "code_sent_time":"11 Jul 2015 04:45 AM","reply_received_time":"11 Jul 2015 05:00 AM","time_diff":22}, 
        {"dt":"12 Jul 2015","avgdelay":"10","code_sent_time":"12 Jul 2015 12:30 PM","reply_received_time":"12 Jul 2015 12:40 PM","time_diff":32},  
        {"dt":"12 Jul 2015","avgdelay":"10","code_sent_time":"12 Jul 2015 02:10 AM","reply_received_time":"12 Jul 2015 02:30 AM","time_diff":11}, 
        {"dt":"12 Jul 2015","avgdelay":"10","code_sent_time":"12 Jul 2015 03:10 AM","reply_received_time":"12 Jul 2015 03:15 AM","time_diff":52}, 
        {"dt":"12 Jul 2015","avgdelay":"10","code_sent_time":"12 Jul 2015 04:45 AM","reply_received_time":"12 Jul 2015 05:00 AM","time_diff":37} 
       ]; 

我的合成陣列會是什麼樣子,

$scope.resarray = [  
        {"dt":"07 Jul 2015","avgdelay":"10","data" : 
              [ 
              {"code_sent_time":"07 Jul 2015 12:30 PM","reply_received_time":"07 Jul 2015 12:40 PM","time_diff":10}, 
              {"code_sent_time":"07 Jul 2015 02:10 AM","reply_received_time":"07 Jul 2015 02:30 AM","time_diff":20 }, 
              {"code_sent_time":"07 Jul 2015 03:10 AM","reply_received_time":"07 Jul 2015 03:15 AM","time_diff":5 }, 
              {"code_sent_time":"07 Jul 2015 04:45 AM","reply_received_time":"07 Jul 2015 05:00 AM","time_diff":15 } 
              ] 
        }, 
        {"dt":"08 Jul 2015","avgdelay":"20","data": 
             [ 
              {"code_sent_time":"08 Jul 2015 12:30 PM","reply_received_time":"08 Jul 2015 12:40 PM","time_diff":35}, 
              {"code_sent_time":"08 Jul 2015 02:10 AM","reply_received_time":"08 Jul 2015 02:30 AM","time_diff":42 }, 
              {"code_sent_time":"08 Jul 2015 03:10 AM","reply_received_time":"08 Jul 2015 03:15 AM","time_diff":5 }, 
              {"code_sent_time":"08 Jul 2015 04:45 AM","reply_received_time":"08 Jul 2015 05:00 AM","time_diff":5 } 
             ] 
        }, 
        {"dt":"09 Jul 2015","avgdelay":"30","data": 
             [ 
              {"code_sent_time":"09 Jul 2015 12:30 PM","reply_received_time":"09 Jul 2015 12:40 PM","time_diff":1}, 
              {"code_sent_time":"09 Jul 2015 02:10 AM","reply_received_time":"09 Jul 2015 02:30 AM","time_diff":28}, 
              {"code_sent_time":"09 Jul 2015 03:10 AM","reply_received_time":"09 Jul 2015 03:15 AM","time_diff":12}, 
              {"code_sent_time":"09 Jul 2015 04:45 AM","reply_received_time":"09 Jul 2015 05:00 AM","time_diff":17}, 
             ] 
        } 
       ];      

每個日期有4行,我想產生的陣列,每一個日期都爲全部4個細節那天另一個數組。 我嘗試了各種選擇,但沒有成功。請幫我解決這個問題。

下面是我已經試過了,

$scope.genarr = function() 
{ 
var data2length = $scope.data2.length; 
var firstdate = $scope.data2[0].dt; 
var sourcecheckdate = firstdate.split(' '); 
$scope.resarray = {}; 
var dtcheckflag = false; 
var insertrow = null; 
var j = 0; 
var k = 0; 
var z = 1; 
var data=[]; 
for (var i=0;i< data2length;i++) 
{ 
    var targetcheckdate = $scope.data2[i].code_sent_time.split(' '); 

    if (targetcheckdate[0] === sourcecheckdate[0] && targetcheckdate[1] === sourcecheckdate[1] && targetcheckdate[2] === sourcecheckdate[2]) 
    { 
     firstdate = $scope.data2[i].dt; 
     sourcecheckdate = firstdate.split(' '); 
    } 
    else 
    { 
     firstdate = $scope.data2[i].dt; 
     sourcecheckdate = firstdate.split(' '); 
    } 

     if (insertrow != firstdate) 
     { 
      k = 0; 
      $scope.resarray[j] = {"dt":$scope.data2[i].dt,"avgdelay":$scope.data2[i].avgdelay,"data":[]}; 
      //$scope.resarray[j].data[k] = null; 
      $scope.resarray[j].data[k]= {"code_sent_time":$scope.data2[i].code_sent_time , "reply_received_time" :$scope.data2[i].reply_received_time , "time_diff" : $scope.data2[i].time_diff}; 
      insertrow = firstdate; 
      j+=1; 
     } 
     else 
     { 
      $scope.resarray[j].data[k]= {"code_sent_time":$scope.data2[i].code_sent_time , "reply_received_time" :$scope.data2[i].reply_received_time , "time_diff" : $scope.data2[i].time_diff};    
     } 

     k +=1; 
} 
}; 
+0

應' 「數據」:[{ 「code_sent」: 「等」},{ 「code_sent」: 「等」}]' – atmd

+0

是的,這是我想要的。剛剛更新了我的代碼 – pankaj

+0

以上,現在它可以工作嗎? – atmd

回答

0

請檢查此:http://plnkr.co/edit/BOYqNcdpi8uGKRraDAw1?p=preview

控制器:

$scope.data = []; //New formated array of data   
for(var k = 0; k < $scope.data2.length; k++) { 
    var arrayData = {}; //Temporary object 
    arrayData.dt = $scope.data2[k].dt; 
    arrayData.avgdelay = $scope.data2[k].avgdelay; 
    arrayData.data = []; 
    for(var j = 0; j<4; j++,k++) { 
     if (arrayData.dt == $scope.data2[k].dt) { 
     var tempObj = {'code_sent_time': $scope.data2[k].code_sent_time, 
     'reply_received_time':$scope.data2[k].reply_received_time, 
     'time_diff':$scope.data2[k].time_diff 
     }; 
     arrayData.data.push(tempObj); 
     } 
    } 

    $scope.data.push(arrayData); 
} 
+0

感謝你好。據工作時,我有4行每個日期。如果我有行的任意數目每天那麼如何計算「J」值? – pankaj

+0

對上述代碼進行了一些更改,它對我有用。 – pankaj

0

data領域目前是一個對象,但它需要一個數組。

{"dt":"07 Jul 2015","avgdelay":"10","data" : 
    { 
    {"code_sent_time":"07 Jul 2015 12:30 PM"}, 
    {"code_sent_time":"07 Jul 2015 02:10 AM"}, 
    {"code_sent_time":"07 Jul 2015 03:10 AM"}, 
    {"code_sent_time":"07 Jul 2015 04:45 AM"} 
    } 
}, 

應該

{"dt":"07 Jul 2015","avgdelay":"10","data" : 
    [ 
    {"code_sent_time":"07 Jul 2015 12:30 PM"}, 
    {"code_sent_time":"07 Jul 2015 02:10 AM"}, 
    {"code_sent_time":"07 Jul 2015 03:10 AM"}, 
    {"code_sent_time":"07 Jul 2015 04:45 AM"} 
    ] 
}, 

{}創建和對象,[]創建和陣列

+0

我已經添加了我的角度js功能代碼上面。不知道我錯過了什麼。 :( – pankaj

0
var newData = []; 
var dateDict = {}; 

angular.forEach(data2,function(d){ 
var temp = {};  
if(dateDict[d.dt]){ 
    dateDict[d.dt].push(d); 
    } 
else{ 
dateDict[d.dt] = []; 
dateDict[d.dt].push(d); 
} 
}); 

angular.forEach(dateDict,function(val,key){ 
var obj = { 
"dt":key, 
"avgdelay":val[0].avgdelay, 
"data": val 
}; 
    newData.push(obj); 
}); 

我認爲這將解決您的問題。 data2是舊數據,newData是你想要的。

+0

它的工作,但只有一個問題。newData.data有另一個對象「d」,它有詳細的數據 – pankaj

+0

一個額外的大括號被錯誤添加,現在我已經更新了代碼。現在它將會工作 – Devjit

+0

很不錯的方法Devjit。學到了新的東西angular.foreach.Thank你。 – pankaj