2009-12-27 2 views
0

Я перебираю 3 массива, нахожу «actionTimings» в каждом массиве и добавляя значения actionTimings (значения - все числа). Как назначить 3 значения, которые я получаю для нового массива? Вот то, что я до сих пор ...Javascript: присваивание динамически созданных значений новому массиву

$.each(dinnerComponents, function(intIndex, component) { 
    totalCookTime = 0; 
    for (var i = 0; i < component.actionTimings.length; i++) { 
     totalCookTime += component.actionTimings[i]; 
    } 
}); 

Я попытался это:

totalCookTime = new Array(totalCookTime); 

Но этот массив содержит 3 набора количества запятых (,). Похоже на количество запятых = totalCookTime-1. Что-то делать со значениями, разделяемыми запятыми? Боюсь, мои знания о массивах немного ограничены.

Спасибо за любую помощь.

ответ

3

Вы можете использовать массив push метод:

var grandTotals = []; // will contain the sub-totals for each 'dinerComponent' 
$.each(dinnerComponents, function(intIndex, component) { 
    var totalCookTime = 0; 
    for (var i = 0; i < component.actionTimings.length; i++) { 
    totalCookTime += +component.actionTimings[i]; // unary plus to ensure Number 
    } 
    grandTotals.push(totalCookTime); 
}); 
0

Ваша проблема заключается в том, что по существу новый Array (п) делает массив с п "слотов".

В любом случае, лучше всего сделать, это использовать «карту» метод JQuery, которая преобразует один массив в другой массив:

var totalCookTime = $(dinnerComponents).map(function (component) { 
    var cookTime = 0; 
    $(component.actionTimings).each(function (index,timing) { 
     cookTime += timing; 
    }) 
    return cookTime; 
}).get(); 

(Окончательный .get() возвращает фактический массив, а не специальный объект jQuery, который ведет себя как массив.)