2016-05-24 6 views

Antwort

0
function arraysum(arraylength) { 
    var arraysum = 0; 
    var array1 = new Array(); 
    for(i=1; i<=arraylength; i++) { 
     array1.push(i); 
    } 
    for(i = 0; i< array1.length; i++) { 
     arraysum += array1[i]; 
    } 
    return arraysum; 
} 

Nun, wenn Sie die Funktion aufrufen

arraysum(x) 

passieren die Funktion einige Variable oder Ganzzahl zum Beispiel 1, 15 oder 10000.

+0

Ich sehe kein Array irgendwo in Ihrem Code. –

+0

Ich habe es für Sie bearbeitet – WildCard

+0

Das Ergebnis wird immer '0' – zerkms

1

Sie können die Summe tun bekommen mit der for-Schleife selbst einfach durch eine variable

mit

var points = new Array(100), 
 
    sum = 0; 
 

 
for (var i = 0; i < 100; i++) { 
 
    points[i] = i + 1; 
 
} 
 

 
for (var i = 0; i < points.length; i++) { 
 
    sum += points[i]; 
 
} 
 

 
console.log(sum);

Sie können diese beiden Operationen reduzieren mit fill() und forEach() zu erzeugt das Array und reduce() die Summe zu erhalten

var points = new Array(10000); // create an array of size 10000 
 
points.fill(1); // fill it with 1 which helps ti=o iterate using foreach 
 

 
points.forEach(function(v, i) { // iterate the array, you can also use simple for loop here 
 
    points[i] = v + i; // update the value 
 
}); 
 

 
var sum = points.reduce(function(a, b) { // find sum 
 
    return a + b; 
 
}); 
 

 
console.log(sum);


Mit for loop und reduce()

var points = []; // initialize an array 
 

 
for (var i = 1; i <= 10000; i++) { 
 
    points.push(i); 
 
} 
 

 
var sum = points.reduce(function(a, b) { // find sum 
 
    return a + b; 
 
}); 
 

 
console.log(sum);


Auch können Sie tun, um die Addition und Array-Erstellung in einzelnen for-Schleife

var points = [], // initialize an array 
 
    sum = 0; 
 

 
for (var i = 1; i <= 10000; i++) { 
 
    points.push(i); // pushing value to array 
 
    sum += i; // summation 
 
} 
 

 
console.log(sum, points);

+0

Jemand lernt die Grundlagen der Programmierung und dann verwenden Sie 'reduce' und' forEach'. Glaubst du wirklich, dass es für das OP hilfreich ist? – zerkms

+1

Warum sollte eine beliebige Teilmenge einer Sprache verwendet werden, nur weil Sie neu sind? – rnevius

+0

@rnevius weil OP die Grundlagen von Algorithmen lernt, dh wie man Aufgaben in Teilaufgaben aufteilt und diese Schritt für Schritt löst. Diese Antwort ist für das OP nicht hilfreich. – zerkms

1
var result = 0; 
for(var i = 0; i < points.length; i++) { 
     result += points[i]; 
    } 

Funktion, die ein Array von beliebiger Länge nimmt und gibt die Summe:

function sumArray(arrayToSum){ 
    var result = 0; 
    for(var i = 0; i < arrayToSum.length; i++) { 
     result += points[i]; 
    } 
    return result; 
} 
+0

Iterieren durch das Array wird nicht mehr benötigt. Verwenden Sie stattdessen "Reduzieren". –

+1

@JoachimSchirrmacher Jungs, ernsthaft, OP ist ein Neuling - sie lernen, wie man Schleifen verwendet. Bitte vergiss "Array.prototype.reduce" für eine Sekunde. – zerkms

+0

@zerkmsWie kannst du diese Antwort in eine Funktion umwandeln, die ein Array beliebiger Länge benötigt und dir die Summe gibt? –

-2

Eine sehr elegante und kompakte Lösung ist reduce zu verwenden. Es reichert sich die Array-Werte, die es auf einen einzelnen Wert zu reduzieren, indem die einzelnen Werte und einen Startwert zu einer bestimmten Funktion der Anwendung, deren Rückgabewert wird als Startwert für die nächste Iteration verwendet:

function sum (a, b) { 
    return a + b; 
} 
console.log(points.reduce(sum, 0)); 

Wenn Sie müssen unterstützen ältere Browser (zB IE 8) können Sie eine Polyfill verwenden.

Wenn Sie auch die Liste der Zahlen zu erstellen, können Sie es schaffen, mit

var points = Array.apply(0, Array(10000)) 
    .map(function (current, index) { 
     return index + 1; 
    }); 

Es schafft eine Reihe von 10000 Elementen und ordnet jedes Element seinen Index + 1.

1

Sie könnten es in zwei Schleifen tun, aber Sie können auch nur eine Schleife machen, die beide Aufgaben erledigt.

var array = [], 
    sum = 0; 
for (var i = 1; i <= 10000; i++) { 
    array[i-1] = i; 
    sum += i; 
} 

Wenn Sie die Aufgabe des Findens der Summe eines Arrays verallgemeinern wollen, können Sie eine Funktion wie so verwenden können:

function arraySum(array) { 
    var sum = 0; 
    for (var i = 0; i < array.length; i++) 
     sum += array[i]; 
    return sum; 
} 

Für diejenigen, die es reduce Verwendung obwohl verstehen kann, ist eine beste Antwort:

function arraySum(array) { 
    return array.reduce(function(a,b){return a+b}, 0); 
} 
+0

"Ich bin nicht sicher, warum das Array hier notwendig ist" --- weil sie lernen, wie man programmiert, und es ist ihre Aufgabe. – zerkms

+0

Ich habe eine Antwort hinzugefügt, die zeigt, wie man eine Funktion erstellt, die dasselbe tut, wenn das Array bereits existiert. – 4castle

Verwandte Themen