2014-03-13 112 views
1

我有以下代碼以從JSON響應中提取值。我想要做的是以類似的方式存儲數據,你將如何使用php中的關聯數組。道歉代碼效率低下。寫下的數組註釋是我希望它在對象中查找的方式。在具有相同鍵的javascript對象中存儲值

$.each(responseData, function(k1,v1){ 
      if(k1 == "0"){ 
       $.each(v1, function(k2,v2){ 
        $.each(v2, function(k3, v3){ 
         if(k3 == "val"){ 
          //store in object here 
          //Array1 = array("time"=>k2, "iVal"=>v3) 
          console.log(k3 + v3 + k2); 
         }else{ 
          //Array2 = array("time"=>k2, "aVal"=>v3) 
          console.log(k3 + v3 + k2); 
         } 
        }); 
       }); 
      } 
}); 

所以所有的信息都存在,但我不知道如何存儲對象中的值的每個實例。我曾嘗試將其存儲這樣的:

//obj created outside 

obj1.date = k2; 
obj2.iVal = v3; 

但顯然這樣做改寫每次,只保留了最後一個實例,所以我想知道怎樣才能做到這一點,因此所有值將被保存?

編輯:添加了所需的輸入和輸出。

輸入

{"0":{"18.00":{"iVal":85.27,"aVal":0.24},"19.00":{"iVal":85.27,"aVal":0.36},"20.00":{"iVal":0,"aVal":0}}, "success":true} 

所需的輸出

array1 = {"time":"18.00", "iVal":85.27},{"time":"19.00", "iVal":85.27},{"time":"20.00", "iVal":0} 
array2 = {"time":"18.00", "aVal":0.24},{"time":"19.00", "aVal":0.36},{"time":"20.00", "aVal":0} 
+0

你可供應樣品_input_和期望的輸出? (而不是所有的代碼)? –

+0

@RoyiNamir編輯它請看看。我對所需輸出的索引可能不正確,因爲我對javascript對象不太清楚。 – user3144542

回答

1

嘗試:

var g1=[]; 
var g2=[]; 


for (a in o[0]) 
    { 
    g1.push({time:a , iVal:o[0][a]['iVal']}) 
    g2.push({time:a , aVal:o[0][a]['aVal']}) 

} 

http://jsbin.com/qividoti/3/edit

enter image description here

+0

我只是試圖用我的返回數據的小提琴這工作得很好,但當我在我的應用程序中嘗試它會給出一個未定義的結果,當我返回編碼的'JSON'數據並將其用作對象,我必須做任何不同的事情嗎? – user3144542

+0

@ user3144542你可以提供json嗎? –

+0

輸出到我的日誌時的JSON與上面的輸入完全相同。除非你的意思與衆不同? – user3144542

0

JSON響應可以轉換回一個js對象調用JSON.parse(jsonString)你的Ajax調用成功回調中的文字。

從此就沒有必要進行遍歷該對象,因爲你瀏覽它就像它可以以兩種方式要麼

js的方式來完成任何其它JS對象 - >點符號

var obj = JSON.parse(jsonStirng); 
var value = obj.value; 

或類似的PHP陣列

var value = obj["value"]; 
+0

我不能這樣做,因爲'value'不會被知道,而是動態的,請參閱可以清除事情的編輯。 – user3144542

+0

「價值」是您想要使用的任何「價值」的佔位符!實際上它是數組或對象的關鍵,它也可以被稱爲object.property – alex

相關問題