dcsimg
www.webdeveloper.com
Results 1 to 4 of 4

Thread: Sum the numbers of an array

  1. #1
    Join Date
    Apr 2017
    Posts
    14

    Question Sum the numbers of an array

    Hello!

    I wrote a function that should sum up all the numbers that are contained within an array which just was created.
    In the mySum function I use the variable "sumOfNumbers" to count all the numbers together. But I do get out NaN.

    I checked with typeof, the array is an array(object), the numbers I extract are numbers, the "sumOfNumbers" variable I created as a number. Why is it not able to count the numbers to the variable?
    I tried to use Number() to make sure what is counted together are numbers, but does not seem to work.

    Code:
    // range to array
    function myRange(start, end) { 
        var numberList = [];
        
        for (var i = start; i <= end; i++) {
            numberList[i] = i;
        }
        return numberList;
    }
    
    //sum array numbers
    function mySum(numbers) {
        var numbers = numbers;
        var sumOfNumbers = 0;
        
        for (var i = 0; i <= numbers.length-1; i++) {
            var c = numbers[i];
            sumOfNumbers += c;   <-- becomes NaN
        }
        return sumOfNumbers;
    }
    
    var x = mySum(myRange(5, 7));
    console.log(x);

  2. #2
    Join Date
    Mar 2011
    Posts
    120
    It doesn't work because
    Code:
    // range to array
    function myRange(start, end) { 
        var numberList = [];
        for (var i = start; i <= end; i++) {
            numberList[i] = i;			// <-- start at position i
        }
        return numberList;
    };
    
    var arr = myRange(5, 7);			// arr = [undefined,undefined,undefined,undefined,undefined,5,6,7]
    mySum(arr);
    
    function mySum(numbers) {
        var numbers = numbers;
        var sumOfNumbers = 0;
        
        for (var i = 0; i <= numbers.length-1; i++) {
            var c = numbers[i];
            sumOfNumbers += c;   //<-- becomes NaN, because adding to undefined 
        }
        return sumOfNumbers;
    };
    This does what you want
    Code:
    function myRange(start, end) { 
        var numberList = [];
        for (var i = start; i <= end; i++) {
            numberList.push(i);
        }
        return numberList;
    };
    
    function mySum(numbers) {
        var sumOfNumbers = 0;    
        for (var i = 0; i < numbers.length; i++) {
            sumOfNumbers += numbers[i];
        }
        return sumOfNumbers;
    };
    
    var arr = myRange(5, 7);
    mySum(arr);

  3. #3
    Join Date
    Mar 2007
    Location
    localhost
    Posts
    4,986
    or prototype it...

    Code:
    Array.prototype.array_sum = function(){
    	// sum the array elements 0 to nth, does not count associative named arrays
    	for( this['sum']=0, tc=0; tc<this.length; tc++ ) this['sum'] += this[tc];
    	this['count'] = this.length;
    }
    Then use it like...

    myArray.array_sum();
    then to get the sum of it, you use sum = myArray['sum'];

    Code:
    	var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    	arr.array_sum();
    	console.log("> " + arr + " = " + arr['sum'] );
    outputs to the console log (F12 open close, click console log tab )
    Code:
    > 1,2,3,4,5,6,7,8,9,10 = 55
    --> JavaScript Frameworks like JQuery, Angular, Node <--
    ... and please remember to wrap code with forum BBCode tags:-

    [CODE]...[/CODE] [HTML]...[/HTML] [PHP]...[/PHP]

    If you can't think outside the box, you will be trapped forever with no escape...

  4. #4
    Join Date
    Apr 2017
    Posts
    14
    Thank you very much for your answers. This helped.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles