2013-08-25 1 views
0

Хорошего дня,Добавление JSON элементы в двухмерном массив

У меня есть этот JSON объект, который я хочу, чтобы нажать и изменить два значения в другой массив

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

я хочу новый строка4 быть как этот формат

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 (...)', а не '$ (строка4) .each() '. Но, очевидно, jQuery разрешительный, а '$ (line4)' такой же, как 'line4'. – Barmar

ответ

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]); 
}); 
+0

Спасибо tandrewnichols, но я уже решил это, используя код ниже 'test' – jayj

Смежные вопросы