2016-10-31 2 views
-1

Ich habe dies bis jetzt und versuche, es zu finden, die Summe von jeder beliebigen Anzahl von eingegebenen Zahlen mit ganzen Zahlen und "-" s zu finden.Wie führe ich eine Funktion für jedes Stück eines Arrays innerhalb einer for-Schleife in Javascript?

Als ich dies ausführen,

var howM = prompt("How many cards?") 

var arr = []; 
for (var i = 0; i < howM; i++) 
    arr.push(prompt("Enter a card:")); 

console.log(arr) 

var sumpre = []; 

for (var i = 0; i <= howM; i++) { 
    var sum = 0; 
    var eXt = arr[i]; 
    eXt = eXt.replace(/-/g, ""); 
    for (i = 0; i < eXt.length; i++) { 
     sum += parseInt(eXt.substr(i, 1)); 
    } 
    sumpre.push(sum); 
} 
console.log(sumpre) 

Ich habe auch versucht

var howM = prompt("How many cards?") 

var arr = []; 
for (var i = 0; i < howM; i++) 
    arr.push(prompt("Enter a card:")); 

console.log(arr) 

for (var i = 0; i < howM; i++) { 
    var sum = 0; 
    var eXt = arr[i] 
    eXt = eXt.replace(/-/g, ""); 
    for (i = 0; i < eXt.length; i++) { 
     sum += parseInt(eXt.substr(i, 1)); 
    } 
} 
console.log(sum); 

In beiden Fällen ich die Summe für das erste Stück in der Anordnung und dann nicht definiert. Wie bekomme ich es für jedes Stück zu laufen? Ich habe irgendwie eine Vorstellung davon, was damit nicht stimmt. Ich weiß einfach nicht, wie ich es beheben soll.

+2

Allgemeine Spitze : Nutzen Sie [Einrückung] (https://en.wikipedia.org/wiki/Indent_style), um die Lesbarkeit Ihres Codes zu verbessern. –

+0

Können Sie Beispieldaten für 'arr' bereitstellen? – Enzey

+0

Sie verwenden den gleichen 'for' Zählervariablennamen (' i') in den äußeren und inneren Schleifen, sie sollten alle ihre eigenen verwenden –

Antwort

0

Sie benötigen einen zweiten Zähler für die verschachtelte for-Schleife zu verwenden, etwa so:

var howM = prompt("How many cards?") 

var arr = []; 
for(var i = 0; i < howM; i++) 
    arr.push(prompt("Enter a card:")); 

console.log(arr) 

var sumpre = []; 

for(var i = 0; i < howM; i++) { 
    var sum = 0; 
    var eXt = arr[i]; 
    eXt = eXt.replace (/-/g, ""); 
    for (var j = 0; j < eXt.length; j++) { 
    sum += parseInt(eXt.substr(j, 1)); 
    } 
    sumpre.push(sum); 
} 
console.log(sumpre) 
-2

Ihre var sum = 0; in Ihrem for-Schleife sum Variable Bedeutung nicht zugänglich außerhalb der Schleife wird

+1

Variablen deklariert mit 'var' sind nicht block scoped, wie diejenigen mit' let' erklärt, 'sum' wird sichtbar sein außerhalb der for-Schleife –

+0

Nein, da ist kein Block-Scoping in JavaScript (es sei denn, Sie benutzen 'let' oder' const') – vlaz

+1

JavaScript hat keinen Block-Level, wenn Variablen mit 'var' deklariert werden. ES2015 führt den Blockbereich mit "Let" ein. Jede Variable, die mit 'var' deklariert wird, hat entweder einen globalen Bereich oder einen Funktionsbereich. –

Verwandte Themen