2017-12-18 7 views
-2

Ich versuche, einen Code zu schreiben, der die Summe einer Array-Länge von 3 berechnet. Jeweils 3 ganze Zahlen sind von Eingabeaufforderung.Berechnen Sie die Summe in Array

Gerade jetzt ist mein Code wie folgt aus:

var num1 = prompt("First number"); 
var num2 = prompt("Second number"); 
var num3 = prompt("Third number"); 

var new_array = [num1, num2, num3] 

function sum_three(new_array) 
    { 
     return new_array[0] + new_array[1] + new_array[2]; 
    } 

document.write(sum_three(new_array)); 

Jedoch, wenn ich sehen das Ergebnis scheint es, dass diese

return new_array[0] + new_array[1] + new_array[2]; 

Teil nicht berechnet, es verketten nur die Zahlen. Wie mache ich Arbeit?

+3

auf eine ganze Zahl Ihre Zahlen analysieren. – Nick

+1

Okay, ich habe gerade Zeilen wie hinzugefügt var num1_int = parseInt (num1); var num2_int = parseInt (num2); var num3_int = parseInt (num3); und es hat funktioniert. Aber weißt du, gibt es einen anderen Weg, den Code zu reduzieren? Ich denke, sie werden zu lang. – kayak

+0

Verwenden Sie reduce für die Summierung und Number(), um Zahlen aus Ihren Strings zu erhalten. 'res = arr.reduce ((a, b) => a + Zahl (b), 0);'. Dein vollständiger Code: 'let res = neues Array (3) .fill(). Reduce ((a, b) => a + Nummer (prompt (" Nummer eingeben ")), 0); ' – baao

Antwort

1

Die von der Tastatur eingegebenen Eingaben sind Zeichenfolgen. Wenn Sie für Strings "addition" + verwenden, verketten Sie sie. Sie müssen die Zahlen, die in Ihrer Zeichenfolge enthalten sind, in eine tatsächliche JavaScript-Nummer konvertieren (parsen).

Ein einfacher Weg, dies zu tun ist, indem Sie eine + vor jeder String-Variable hinzufügen. Er wird versuchen, es am besten, um das Verhalten

Einfaches Beispiel Ihre Strings als Zahlen ‚zu interpretieren‘ ausstellenden

return +new_array[0] + +new_array[1] + +new_array[2]; 

Eigentlich ist die richtige technische Bezeichnung lautet ‚Zwang‘, dank @NeilDocherty, weitere Infos hier https://github.com/getify/You-Dont-Know-JS/blob/master/types%20%26%20grammar/ch4.md):

console.log("3" + "5"); // outputs 35 
 
console.log(+"3" + +"5"); // outputs 8

Sie auchverwenden können 10, wie Sie bereits getan haben.

Es gibt Unterschiede zwischen den beiden, siehe zum Beispiel diesen Beitrag: parseInt vs unary plus - when to use which

Insbesondere ParseInt NaN für eine leere Zeichenfolge während + zurückkehren wird es als 0 zwingen.

+0

Dies nennt man Zwang, lesen Sie hier https://github.com/getify/You-Dont-Know-JS/blob/master/types%20%26%20grammar/ch4.md –

+0

Danke! Ich habe nur die Saiten analysiert und es hat funktioniert. – kayak

+0

Danke für den Link! – kayak

0

Eine modernere Lösung wäre die Verwendung der Array.prototype.reduce Methode.

Ich finde das besser lesbar, aber wenn Sie gehen Browsern zu unterstützen älter als IE9, dann werden Sie zu polyfill in es brauchen.

var new_array = [prompt("First number"), prompt("Second number"), prompt("Third number")]; 
 

 
function array_sum(accumulator, currentValue) { 
 
    return parseFloat(accumulator.toString()) + parseFloat(currentValue.toString()); 
 
} 
 

 
function sum_three(arr) { 
 
    return arr.reduce(array_sum); 
 
} 
 
document.write(sum_three(new_array));

Verwandte Themen