2013-06-11 3 views
2

Я искал весь стек stackoverflow для чего-то, что помогло мне реализовать AreaChart. Проблема в том, что у меня есть что-то вроде этого.Как создать вложенные массивы? Javascript

var items = new Array(); 
if ($(result).find('dato').length > 0) { 
    items = ["Date", "Kg Emitted", "Kg Reduced"]; 
    $(result).find('dato').each(
    function (i) { 
     var item = new Array(); 
     var date = $(this).find("fecha").first().text(); 
     var kge = parseInt($(this).find("emitido").first().text()); 
     var kgr = parseInt($(this).find("reducido").first().text()); 
     item = [date,kge,kgr]; 
     items.push.apply(items, item) 
    } 
); 
}; 

Проблема заключается в том, что мне это нужно в таком формате, как:

items = ["Date","Kg Emitted", "Kg reduced"], [2013-01-01, 3, 4], [2013-01-02, 1, 3], etc

Я был бы признателен за любую помощь, о том, как форматировать этот вложенный массив, потому что до сих пор я пытался items.push.apply(items, item), но он, похоже, не работает.

+0

Я забыл упомянуть. Каждый из этих методов получает ajax с xml formated var, который содержит fecha, emitido и reducido, который является датой, Kg Испускаемый и Kg уменьшен – Joaquin

ответ

0

Все дали вам правильный ответ здесь, я хочу добавить только немного исправить, первое значение в массиве неверен и фактически 3 ряда.

увидеть разницу in this fiddle

вам нужно добавить еще один [..].

+0

Я сделал все, что вы мне сказали, но график не работал, поэтому я поставил предупреждение (пункты [0] + "" + items [1] + "" + items [2]); И то, что я получил, было Дата, Kg Испущено, Kg Сокращенная дата, Kg Испущена, Kg Уменьшено, 04-06-2013,1,0,, 05-06-2013,8,0,, 06-06-2013,1 , 0,, ​​07-06-2013,21,0,, 08-06-2013,1,0,, 09-06-2013,20,0,, 10-06-2013,1,0 04-06- 2013,1,0 .... почему повторяются данные? – Joaquin

+0

Я только что понял, что у меня есть items.push (items, item); Я проверяю, чтобы это было – Joaquin

1

Просто измените items.push.apply(items, item) на items.push(item).

Когда вы применяете подобное действие, вы делаете то же самое, что и Array.prototype.concat.

+0

Спасибо. Он отлично работал :) – Joaquin

0

Ваша инициализация items не устанавливает его как вложенный массив. Элемент 0 - «Дата», 1 - «Kg Emitted» и 2 «Kg Reduced».

Вы хотите, чтобы запустить его с

items = [["Date", "Kg Emitted", "Kg Reduced"]]; 

это вместо этого сделать элемент 0 из массива будет [ «Дата», «кг излучаемого», «кг Уменьшенный»], которая является то, что вы говорите, что вы хотите ,

Тогда, как другие уже говорили, изменить items.push.apply(items, item) к

items.push(item); 
+1

Спасибо. Он отлично работал :) – Joaquin

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