-3
votes

Somme de valeurs de tableau en JavaScript

Y a-t-il un moyen normal de calculer la somme des valeurs de matrice dans JavaScript?

Comme dans PHP - $ SUM = Array_sum ($ Nums); Code> P>

Que trouvé est ce qui suit et BTW - ne fonctionne pas. p>

J'ai besoin du résultat - 10 code> et non 235 code>; p>

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


1 commentaires

Vous devez analyser une chaîne au numéro


4 Réponses :


3
votes

Convertissez-les en numéro en utilisant Number () code> . En tant que tableau contenant Strings code> SO + CODE> Opérateur les joindrez à ne pas les ajouter.

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


0 commentaires

3
votes

Le tableau a des chaînes, vous aurez besoin de les analyser à int code> s, utilisez parseint () ou + code> à couler au numéro

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


2 commentaires

+ n'est pas sténographique pour parseint () . Type: + "123.456" dans votre console et voyez ce que vous obtenez.


@Scottmarcus a noté, thnx :), édité la réponse



1
votes

Si tous les articles sont des chaînes, ils seront traités comme une concaténation. De plus, vous devez fournir une valeur initiale de zéro pour l'exhaustivité.

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


0 commentaires

2
votes

Un correctif possible consiste à forcer la chaîne représentant des numéros code> à numéros code> avec l'opérateur em> str> strong> strong> de MDN : P>

Unary Plus est la manière la plus rapide et préférée de convertir quelque chose en un nombre p> BlockQuote>

En outre, je changerai la définition de votre fonction pour être plus lisible, réduire () code> commence par un accumulateur code> de 0 code> 0 code> Et sur chaque itération sur la matrice, il résume le numéro actuel révisé à l'accumulateur. P>

p>

function sum(arr)
{
    return arr.reduce((acc, num) =>
    {
        num = parseFloat(num);
        return acc + (Number.isNaN(num) ? 0 : num)
    }, 0);
}

let nums1 = ["2","3","5"];
console.log(sum(nums1));
let nums2 = ["2","3.345","5.5", "foo", {foo:"bar"}, ["hello"]];
console.log(sum(nums2));


0 commentaires