2013-08-25 107 views
0

好日,添加JSON元件二維陣列

我有要推和改變兩個值這JSON對象在另一個數組

var line4 = [ 
{"viewed":2, "sumDate":1377129600000, "redeemed" : 8}, 
{"viewed":12, "sumDate":1377129600000, "redeemed" : 3}, 
{"viewed":18, "sumDate":1377129600000, "redeemed" : 13} 
]; 

我希望新LINE4是類似這樣的格式

newline4 = [["2008-06-30", 2], ["2008-7-14", 12, ["2008-7-28", 18]] 

我似乎無法正確格式化我的陣列

$(line4).each(function (index, value) { 
    console.log("value: " + value); 
    $(value).map(function(){   
     d = new Date(parseInt(this.sumDate)); 
     this.sumDate = (1 + d.getMonth()) + '/'+ d.getDate() + '/' + d.getFullYear().toString().slice(-2); 
     console.log("sumdate : " +this.sumDate); 
     console.log("viewed : " +this.viewed); 

     newline4.push([this.sumDate, this.viewed]);  
    }); 

}); 

但即時得到

newline4 : 8/21/13,2,8/21/13,12,8/21/13,18 
+0

什麼是'$(line4)'應該是?假設你使用jQuery,'$()'的參數應該是DOM元素或選擇器,我從來沒有聽說過使用數組作爲參數。 – Barmar

+0

它是我的JSON對象,我想迭代到一個新的數組對象[[],[]] – jayj

+0

它應該只是'line4.each(...)',而不是'$(line4).each() '。但顯然jQuery是寬容的,'$(line4)'和'line4'是一樣的。 – Barmar

回答

0

您使用的每地圖錯誤的形式。 jQuery(選擇器/元素/ jQuery).each旨在迭代DOM元素。你想使用:

$.each(line4, function(index, value){ 

另外,$ .map只適用於數組。不過,看看你想要做什麼,我認爲你根本不需要地圖。您已經使用.each()訪問每個對象 - 您無法映射對象,並且您肯定無法訪問映射內對象的屬性。你應該能夠刪除地圖部分。

var newline4 = []; 
$.each(line4, function(index, value){ 
    // use "var" so as not to make this a global variable 
    var d = new Date(parseInt(value.sumDate)); 
    var sumDate = (1 + d.getMonth()) + '/'+ d.getDate() + '/' + d.getFullYear().toString().slice(-2); 
    newline4.push([sumDate, value.viewed]); 
}); 
+0

謝謝tandrewnichols,但我已經解決了它使用下面的代碼 '測試' – jayj