2016-07-07 99 views
1

我有這個JavaScript數組:JSON對象推到JavaScript數組

var data = ([ 

     ['Price', 'Time'], 
     ['1.10661', 1467923348, ], 
     ['1.10675', 1467923349, ], 
     ['1.10681', 1467923350, ], 
     ['1.10690', 1467923351, ], 

    ]); 

林發送使用AJAX和Im reciving爲響應此JSON對象到我的服務器發出請求:

[{"PRICE":"1.10662","TIME":"1467923352"},{"PRICE":"1.10663","TIME":"1467923353"}] 

想什麼IM要做的是解析響應,並推動我的陣列內的對象,所以最終結果應該是這樣的:

var data = ([ 

     ['Price', 'Time'], 
     ['1.10661', 1467923348, ], 
     ['1.10675', 1467923349, ], 
     ['1.10681', 1467923350, ], 
     ['1.10690', 1467923351, ], 
     ['1.10662', 1467923352, ], 
     ['1.10663', 1467923353, ], 

    ]); 

請記住我在每個請求中收到的響應數量。在這個例子中,我給予的只是兩個對象,但是這一直在變化。

謝謝你提前

+1

你嘗試過什麼。 SO不是代碼寫入服務。 – bhspencer

+0

提供你的JS腳本。我會解決它 –

回答

0

我想你可以把你的問題分解成2部分。首先考慮如何在數據格式方面使response數據看起來與data相同。然後將2個數組合併成一個。

這是我的方法。首先使用map api遍歷resp中的每個對象,並提取PRICE和TIME的屬性值並將其存儲到新數組中。這應該給你一個數組,位置爲0,價格爲1,時間爲1。

[[ '1.10662', '1467923352'],[ '1.10663', '1467923353']]

然後使用concat API將2個陣列組合成一個。

例子:

var data = ([ 

    ['Price', 'Time'], 
    ['1.10661', 1467923348, ], 
    ['1.10675', 1467923349, ], 
    ['1.10681', 1467923350, ], 
    ['1.10690', 1467923351, ], 

]); 

var resp = [{"PRICE":"1.10662","TIME":"1467923352"},{"PRICE":"1.10663","TIME":"1467923353"}]; 

data = data.concat(
    resp.map(entity => { return [ entity.PRICE, entity.TIME ]; }) 
); 

輸出:

[ [ 'Price', 'Time' ], 
    [ '1.10661', 1467923348 ], 
    [ '1.10675', 1467923349 ], 
    [ '1.10681', 1467923350 ], 
    [ '1.10690', 1467923351 ], 
    [ '1.10662', '1467923352' ], 
    [ '1.10663', '1467923353' ] ] 

你可能想了解更多關於這裏的mapconcat API;

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/concat

0

非常感謝您的答案!我找到了解決方案,讓我與你分享。
(這個例子是一個有點不同,但這個想法是完全一樣的)

0
<html> 
<body> 

     <script> 
     var myArray = [{"ASK":"1.10662","TIME":"1467923348"},{"ASK":"1.10663","TIME":"1467923346"},{"ASK":"1.10661","TIME":"1467923340"},{"ASK":"1.10663","TIME":"1467923346"}, 
     {"ASK":"1.10661","TIME":"1467923340"}]; 

       var data = ([ 

        ['PRICE', 'TIME'], 

       ]); 



     var actualrows = data.length 
     var finalrows = data.length + myArray.length; 





     for(var i=actualrows; i<finalrows; i++) { 
      data.push([]); 
     } 

     while(actualrows < finalrows){ 
      var column = 0; 
      while(column <2){ 
       data[actualrows][0] = myArray[actualrows-1]['ASK']; 
       data[actualrows][1] = myArray[actualrows-1]['TIME'];; 
      column++; 
      } 

       actualrows++ ;  
     } 



     </script> 



</body> 
</html>