2009-12-27 3 views
0

Je suis en boucle à travers 3 tableaux, en trouvant 'actionTimings' dans chaque tableau et en additionnant les valeurs actionTimings (les valeurs sont tous les nombres). Comment attribuer les 3 valeurs que j'obtiens à un nouveau tableau? Voici ce que j'ai jusqu'à présent ...Javascript: Assigner des valeurs produites dynamiquement au nouveau tableau

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

J'ai essayé ceci:

totalCookTime = new Array(totalCookTime); 

Mais ce tableau contient 3 séries d'une quantité de virgules (,). On dirait que le nombre de virgules = totalCookTime-1. Quelque chose à voir avec les valeurs étant séparées par des virgules? Ma connaissance des tableaux est un peu limitée, j'en ai peur.

Merci pour toute aide.

Répondre

3

Vous pouvez utiliser la méthode Array 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

Votre problème est essentiellement ce nouveau Array (n) fait un tableau avec n "slots".

Dans tous les cas, la meilleure chose à faire est d'utiliser la méthode « carte » jQuery, qui convertit un tableau à un autre tableau:

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

(Le .get final() retourne un tableau réel plutôt que un objet jQuery spécial qui se comporte comme un tableau.)

Questions connexes