2016-06-29 4 views
0

Ich bin ziemlich fließend in C#, aber ich kämpfe auf einem sehr grundlegenden (scheint) Konzept hier in der Javascript-Teil meines Tickets. Dieses Stück Code:Kann Zählvariable in Embedded Array Lookup nicht verwenden

addPaymentsToBreakdown = function() { 
    for (var count = 0; count < checkedPayments.length; count++) { 
     (function (count) { 
      console.log(checkedPayments[0][count].value); 
     })(count); 
    } 
} 

Ist ein kleinerer Teil einer größeren Funktion, die ich geschrieben habe. Das Array 'checkedPayments' wird an anderer Stelle verwendet und ordnungsgemäß instanziiert.

Das Konzept, das ich nicht verstehe, ist, warum ich nicht einfach die Zählvariable in meiner Funktion verwenden kann, um über die zweite Stufe von 'Zähl'-Indizes im Array zu iterieren. Wenn ich manuell eine Zahl eingeben würde, könnte ich einen der Indizes gut nachschlagen. Ich kann auch nur console.log() jedes Element im Array, aber aus irgendeinem Grund die Kombination der Verwendung dieser Zähler-Variable mit dem eingebetteten Array-Index Dinge vermasseln. Der Fehler, dass Ich sehe nach ist Uncaught TypeError: Cannot read property 'value' of undefined. Bitte helfen Sie mir mit einer Lösung, und eine einfache Erklärung, warum die Dinge nicht funktionieren. Danke

+0

Ist 'checkedPayments [0]' ein Array mit der gleichen Länge wie 'checkedPayments.length'? – ray

+0

Sie können 'let' anstelle von' var' verwenden. Aber mit 'var' magst du es mögen' (function (i) {return console.log (checkedPayments [0] [i] .value);}) (count) 'Benutze' count' nicht als inneres Funktionsargument. – Redu

+0

Ihr Code funktioniert unmodifiziert in [dieser Geige] (https://jsfiddle.net/hvqcLoff/1/), obwohl die Struktur von checkedPayments mich als ungerade trifft. – ray

Antwort

0

Danke für all Ihre Jungs Feedback. Ich habe die Antwort gefunden und möchte sie teilen. Der Code: addPaymentsToBreakdown = function() { console.log('checkedPayments:', checkedPayments); for (var count = 0; count < checkedPayments.length; count++) { console.log(checkedPayments[count][0].value); } }

Beendet, genau das zu tun, was ich brauchte. Der Schlüssel war, den [count] [0] .value zu finden. Ich musste weiter auf eine Ebene zugreifen, als ich es war. Die Ausgabe dieses Arrays zeigt jetzt den Wert der drei Elemente an, die IDs aus der Datenbank darstellen. Ich kann dies jetzt verwenden, um meine Abfrage abzuschließen. Danke für Ihre Hilfe;)