0
votes

Comment s'accumuler sur chaque numéro? Javascript

C'est mon problème, j'ai du mal à faire quoi faire pour résoudre ce problème La tâche: nous vous transmettrons un tableau de deux chiffres. Renvoyer la somme de ces deux chiffres plus le somme de tous les chiffres entre eux. Le nombre le plus bas ne viendra pas toujours en premier. XXX PRE>

P>

function sumAll(arr) {
  Math.min(arr); //finds the lowest number and takes it 1
  Math.max(arr); //finds the largest number 4
  //must start at the 1st number and loops over until the max value is reached
  //0 start at the 0th index of the array 
  //++ increament by one so 1 2 3 4 
  //multiply's each number
  //.lenght until the lenght of the array is reached
  var i;
  for (i = 0; i < arr.length; i++) {
    i * i;
  }
  return 1;
}

sumAll([1, 4]);


4 commentaires

Est-ce que ça va être toujours 2 chiffres dans un tableau?


Tout le monde utilise des boucles lorsque cela peut être fait O (1) ... Somme de fonction (Art) {const Start = arr [0], fin = arr [1]; retour (fin - Démarrage + 1) * (Démarrer + fin) / 2; }


@ D.Pardal Ajouter une réponse, mais assurez-vous de trier d'abord


@segfault J'étais sur le point de le faire, mais la question a été fermée ...


6 Réponses :


-1
votes

Vous pouvez simplement trouver le numéro inférieur avant d'exécuter la boucle pour obtenir la somme de tous les numéros entre INBETWeen.

Vous pouvez simplement ajouter la condition: xxx


0 commentaires

-1
votes

Il suffit de trier le tableau et d'exécuter la boucle pour ajouter le numéro, à partir du premier élément se terminant au deuxième élément

p>

function findSum(arr){
    let sortedArr = arr.slice().sort((a,b) => a-b);
    let total =0;
    for(let i=arr[0];i<=arr[1];i++){
        total+=i;
}
console.log(total);
}

findSum([1,4])


1 commentaires

Est-ce que la personne, qui a bownvoted solution, spécifie la raison aussi? Il est essentiel de comprendre la question. Les bowvotes inutiles sont découragés!



2
votes

Si cela va être toujours 2 numéros dans un tableau, vous pouvez facilement le faire et plus de code fantaisie.

var arr = [1, 4];
arr.sort((a, b) => a - b);
var total = 0;
for (var i = arr[0]; i <= arr[1]; i++ ) {
     total += i;
}

console.log(total);


2 commentaires

Il n'est pas nécessaire que le premier indice serait le plus bas, c'est la principale question.


Je vois, je n'ai pas notice que, alors il peut simplement trier le premier. Réponse mise à jour.



-1
votes
var points = [40, 100, 1, 5, 25, 10]; 
points.sort(function(a, b){return a-b});
points[0]; // this is min value of the array values
You can check this link on w3schools

0 commentaires

0
votes

Vous pouvez le faire un certain nombre de manières, dans ce cas, j'utilise une boucle tandis que.

p>

function sumAll(arr) {
  // Get the min/max values from the array,
  // Note: you have to spread the array values as individual args using '...' notation
  const min = Math.min(...arr);
  const max = Math.max(...arr); 
  
  // Start at the min value
  let current = min;
  let sum = 0;
  // Loop through all numbers between min and max inclusively
  while (current <= max) {
    sum += current;
    current++;
  }
  
  return sum;
};

console.log(sumAll([1, 4]));


0 commentaires

1
votes

Vous pouvez saisir le plus grand numéro de votre réseau d'entrées à l'aide de math.max code> et le plus petit numéro de la matrice en utilisant math.min code>, vous avez juste besoin de Spread Les valeurs de la matrice dans la méthode appelle afin que les chiffres de la matrice d'entrée sont utilisés comme arguments (plutôt que le tableau lui-même).

Une fois que vous avez le plus grand et le plus petit nombre, vous pouvez trouver la somme entre (et y compris) ces deux numéros. Cela peut être fait en utilisant une boucle. Cependant, une manière plus efficace serait d'utiliser une formule pour la calculer pour vous. Si vous appelez le plus petit nombre a code> et le plus grand nombre b code>, vous souhaitez rechercher: p> xxx pré>

comme vous pouvez Voir ci-dessus res2 code> et res code> est égal. Nous pouvons donc dire res2 = res code>. Donc, si nous exécutons res + res2 code>, nous obtiendrons 2 * res code>. Si nous ajoutons les deux ensemble (en ajoutant par les colonnes), nous obtenons: p> xxx pré>

comme vous pouvez le voir 2 * res code> Résultats dans A + B CODE> Être répété pour chaque numéro de l'équation d'origine, qui est BA + 1 code> fois. Ainsi: p> xxx pré>

Comme nous souhaitons trouver ce que res code> est, nous pouvons diviser les deux côtés par 2 code> pour obtenir: p> xxx pré>

Donc, nous pouvons utiliser l'équation ci-dessus pour trouver la somme des nombres entre deux numéros A code> et B code>, où a code> est le nombre plus petit et b code> est le plus grand numéro. p>

à l'aide des deux math.max () code>, math.min () code> et l'équation ci-dessus, nous pouvons le faire en utilisant les éléments suivants: p>

p>

const sumRange = (a, b) => ((b - a + 1)*(a + b))/2;
function sumAll(arr) {
  const smaller = Math.min(...arr);
  const bigger = Math.max(...arr);
  return sumRange(smaller, bigger); 
}

console.log(sumAll([4, 1]));


0 commentaires