--- title: Sum All Numbers in a Range --- ![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ":triangular_flag_on_post:") Remember to use **`Read-Search-Ask`** if you get stuck. Try to pair program ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ":busts_in_silhouette:") and write your own code ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":pencil:") ### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ":checkered_flag:") Problem Explanation: You need to create a program that will take an array of two numbers who are not necessarily in order, and then add not just those numbers but any numbers in between. For example, [3,1] will be the same as `1+2+3` and not just `3+1` ## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ":speech_balloon:") Hint: 1 Use `Math.max()` to find the maximum value of two numbers. > _try to solve the problem now_ ## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ":speech_balloon:") Hint: 2 Use `Math.min()` to find the minimum value of two numbers. > _try to solve the problem now_ ## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ":speech_balloon:") Hint: 3 Remember to that you must add all the numbers in between so this would require a way to get those numbers. > _try to solve the problem now_ ## Spoiler Alert! ![warning sign](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif) **Solution ahead!** ## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":beginner:") Basic Code Solution: function sumAll(arr) { var max = Math.max(arr[0], arr[1]); var min = Math.min(arr[0], arr[1]); var temp = 0; for (var i=min; i <= max; i++){ temp += i; } return(temp); } sumAll([1, 4]); ![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":rocket:") Run Code ### Code Explanation: * First create a variable to store the max number between two. * The same as before for the Smallest number. * We create a temporary variable to add the numbers. Since the numbers might not be always in order, using `max()` and `min()` will help organize. #### Relevant Links * Math.max() * Math.min() * For Loops ## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ":sunflower:") Intermediate Code Solution: const sumAll = (arr) => { // Buckle up everything to one! const startNum = arr[0]; const endNum = arr[1]; // Get the count of numbers between the two numbers by subtracting them and add 1 to the absolute value. // ex. There are |1-4| + 1 = 4, (1, 2, 3, 4), 4 numbers between 1 and 4. const numCount = Math.abs(startNum - endNum) + 1 // Using Arithmetic Progression summing formula const sum = (startNum + endNum) * numCount / 2; return sum; }; ![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":rocket:") Run Code ### Code Explanation: * The formula for calculating the sum of a continuous range is "(startNum + endNum) * numCount / 2". * arr[0] and arr[1] can either be startNum or endNum, order doesn't matter. * We can get the count of numbers in range by "Math.abs(arr[0] - arr[1]) + 1". * Applying the formula by plugging in the numbers. #### Relevant Links * Array.sort() * Arithmetic Progression summing formula * ES6 arrow function ## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ":rotating_light:") Advanced Code Solution: function sumAll(arr) { var sum = 0; for (var i = Math.min(...arr); i <= Math.max(...arr); i++){ sum += i; } return sum; } sumAll([1, 4]); ![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":rocket:") Run Code ### Code Explanation: * Creating a variable sum to store the sum of the elements. * Starting iteration of the loop from min element of given array and stopping when it reaches the max element. * Using a spread operator (...arr) allows passing the actual array to the function instead of one-by-one elements. #### Relevant Links * Spread Operator * Using Spread Operator in Math.max() ## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ":clipboard:") NOTES FOR CONTRIBUTIONS: * ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":warning:") **DO NOT** add solutions that are similar to any existing solutions. If you think it is **_similar but better_**, then try to merge (or replace) the existing similar solution. * Add an explanation of your solution. * Categorize the solution in one of the following categories — **Basic**, **Intermediate** and **Advanced**. ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":traffic_light:")