2017-09-12 4 views
0

Ich erhalte einen Typ Fehler, der besagt, dass das Array testA [i] undefiniert ist, wenn ich eine Eingabe in die HTML-Seite hinzufügen. Ich habe das Array gesetzt und ich versuche, den Wert der Währung auf das Array mit der Push-Methode hinzufügen, um den zweiten Teil des Feldes, dh ([0] [Währung])undefined Parameter in js

function Test() { 

var testA = []; 
for (i = 0; i < 4; i++) { 
     this.currency = prompt("Please enter a 3-letter currency abbreviation", ""); 
     testA[i].push(currency); 
     } 
} 
var index = new Test(); 

enter image description here

hinzufügen

Jede Hilfe, warum das Array nicht definiert ist, wäre willkommen.

Hinweis: Ich habe jetzt testA.push (Währung) und testA [i] = this.currency versucht, und ich bekomme immer noch den gleichen Fehler wie zuvor.

Hinweis: In der endgültigen Version sollten 4 verschiedene Fragen durchlaufen und jedes Mal in ein Array eingefügt werden. Am Ende der Schleife sollte eine neue Variante des Arrays erstellt werden und die neue Datenmenge wird hinzugefügt. etwas wie for(i = 0; i < 4; i++) { testA[i] = i; for(j = 0; j < 4; j++) { this.currency = prompt("Please enter a 3-letter currency abbreviation", ""); testA[i][j] = this.currency; } }

aber zu diesem Zeitpunkt versuche ich nur, es zur Arbeit zu bekommen.

+0

vergessen zu erwähnen, muss das 4 verschiedene Teile für eine Schleife. Daher muss ich den Währungswert im Index haben. testA [i] [0] <- hier. Wenn die Schleife das Ende erreicht, gehe ich um 1 nach oben und stelle die Frage erneut.nach 4 mal sollte ich haben testA [0] [währung] testA [1] [währung] testA [2] [währung] testA [3] [währung] – soul6942

Antwort

5

Sie verwenden die push-Methode nicht für einen Index. Sie verwenden es für das Array selbst.

Ersetzen Sie diese

testA[i].push(currency); 

Mit diesem

testA.push(currency); 
1

Sie müssen direkt Push-Operation auf dem Array auszuführen.

testA.push(currency); 

Durch testA[index] Ausführen Sie Haltewert erhalten wird. In JS wird immer undefined zurückgegeben, wenn der Index größer als die Array-Länge ist.

Da Ihr Array zu Beginn leer ist, erhalten Sie immer .

1

Sie vermischen zwei verschiedene Implementierungen.

Entweder Sie verwenden direkte Zuweisung.


Entweder Sie drücken neue Werte in das Array.

var testA = []; 

for (i = 0; i < 4; i += 1) { 
    this.currency = prompt('...', ''); 

    testA.push(this.currency); 
} 

sollten Sie die zweite verwenden, das ist die einfachstesoluce.

1
testA[i] = this.currency OR testA.push(this.currency) 

Verwendung Modifizierte Funktion unten

function Test() { 
     var testA = []; 
      for (i = 0; i < 4; i++) { 
        this.currency = prompt("Please enter a 3-letter currency abbreviation", ""); 
        testA[i] = this.currency; // use this.currency here if you 
        } 
      console.log(testA); 
      } 

var index = new Test();