将JSON元素添加到二维数组

时间:2013-08-25 02:11:36

标签: javascript jquery

美好的一天,

我有这个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

1 个答案:

答案 0 :(得分:0)

你使用的是每个地图的错误形式。 jQuery(selector / element / 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]);
});