2009-11-25 4 views
0

Je ne parle PAS d'ajouter des éléments ensemble, mais leurs valeurs à une autre variable séparée.comment ajouter des valeurs d'éléments de tableau avec javascript?

Comme ceci:

var TOTAL = 0; 
for (i=0; i<10; i++){ 
TOTAL += myArray[i] 
} 

Avec ce code, TOTAL ne pas ajouter mathématiquement les valeurs des éléments ensemble, mais il les ajoute côté de l'autre, donc si myArr[1] = 10 et myArr[2] = 10 alors TOTAL sera 1010 au lieu de 20.

Comment écrire ce que je veux?

Merci

Répondre

5

Ressemble vos éléments du tableau sont des chaînes, essayez de les convertir en nombre lors de l'ajout:

var total = 0; 
for (var i=0; i<10; i++){ 
    total += +myArray[i]; 
} 

Notez que j'utilise le plus unaire (+myArray[i]), c'est une façon commune pour vous assurer que vous ajoutez des nombres, pas de concaténation de chaînes.

+1

lOL, cela signifie que 'lol - = - lmao' est valide script java? :) – abyx

1

Assurez-vous que votre tableau contient des nombres et non des valeurs de chaîne. Vous pouvez convertir des chaînes en nombres en utilisant parseInt (nombre, la base)

var total = 0; 
for(i=0; i<myArray.length; i++){ 
    var number = parseInt(myArray[i], 10); 
    total += number; 
} 
+1

Il n'est pas sage de laisser le paramètre radix – Greg

+0

Dammit, votre droit absolu, était juste d'avoir hâte d'obtenir ma réponse là-bas. l'a ajouté. –

+0

Vraiment? Pourquoi n'est-ce pas sage? En Java, il vaut 10 par défaut. Est-ce différent en javascript? – abyx

2

Un moyen rapide est d'utiliser le plus unaire pour les rendre numérique:

var TOTAL = 0; 
for (var i = 0; i < 10; i++) 
{ 
    TOTAL += +myArray[i]; 
} 
0

Utilisez parseInt ou parseFloat (pour virgule flottante)

var total = 0; 
for (i=0; i<10; i++) 
total+=parseInt(myArray[i]); 
0
var total = myArray.reduce(function(a,b){ return +a + +b; } 
Questions connexes