Entwickler-Ecke
Programmiersprachen (Client) - Javascript LinkedList
LINUS19 - Mi 11.07.18 17:41
Titel: Javascript LinkedList
Hallo,
für ein Spiel benötige ich eine LinkedList. Ich hatte bisher folgendes,nur wird dann in der console undefiened ausgegeben:
JavaScript-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| function Node(value) { var next =null; this.value=value; }
function LinkedList() {
var first = null; var elements = 0;
this.addFirst = function addFirst(value) {
elements++; var newNode = new Node(value); newNode.next = this.first; this.first = newNode; }
this.get = function get(value) {
var currentNode = first; var tmp =0;
while(elements < value) {
if(value > elements - 1) { console.log("Fehler ungültiger Index"); }
tmp++; currentNode= currentNode.next;
if(tmp==value) { return currentNode; } } } }
var l = new LinkedList(); l.addFirst(3); console.log(l.get(0)); |
Woran liegt es, dass wenn ich mir ein Element ausgeben möchte, dieser Fehler aauftritt?
Danke im Vorraus.
Moderiert von Christian S.: Code- durch JS-Tags ersetzt
Christian S. - Mi 11.07.18 20:01
Hallo,
hast Du denn mal im Debugger geschaut, wie der Ablauf im Programm ist, auf welche Variabeln / Felder zugegriffen wird und welche Werte die haben?
Grüße
Christian
LINUS19 - Do 12.07.18 00:22
Danke, habe es mir im Debugger angeschaut und ich denke es funktioniert soweit wenn ich Zahlen hinzufüge. Aber wenn ich jetzt einen Punkt hinzufüge und mir die Koordinaten davon ausgeben lassen möchte bekomme ich folgende Fehlermeldung :Uncaught TypeError: l.get(...).getX is not a function
Woran liegt das?
JavaScript-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79:
| function Point(x, y) { this.x=x; this.y=y;
this.getX = function getX() { return this.x; }
this.getY = function getY() { return this.y; } }
function Node(point) { var next =null; this.point=point; }
function LinkedList() {
var first = null; var elements = 0;
this.addFirst = function addFirst(point) {
elements++; var newNode = new Node(point); newNode.next = first; first = newNode; }
this.addLast = function addLast(point) { elements++; var newNode = new Node(point); var currentNode = first;
while(currentNode.next!=null) { currentNode = currentNode.next; } currentNode.next = newNode; newNode = currentNode; }
this.get = function get(index) {
var currentNode = first; var tmp =0;
while(true) {
if(index> elements - 1) { console.log("Fehler: ungültiger Index"); return null; }
if(tmp==index) { return currentNode; }
tmp++; currentNode= currentNode.next; } } }
var l = new LinkedList();
l.addFirst(3); l.addFirst(4); l.addLast(5); console.log(l.get(0)); Bei Punkt aber:
var p =new Point(2,3);
l.addFirst(p); console.log(l.get(0).getX()); console.log(p.getX()); |
Moderiert von Christian S.: Code- durch JS-Tags ersetzt
LINUS19 - Do 12.07.18 20:47
Quelltext
1: 2:
| var p =new Point(2,3); console.log(p.getX()); |
So bekomme ich als Ausgabe 2.
Nur wenn ich
Quelltext
1:
| console.log(l.get(0).getX()); |
schreibe kommt diese Fehlermeldung: Uncaught TypeError: l.get(...).getX is not a function
Eigentlich wird dabei ja ein Punkt Objekt zurückgegeben, warum tritt dann diese Fehlermeldung auf?
Christian S. - Do 12.07.18 22:07
LINUS19 hat folgendes geschrieben : |
Eigentlich wird dabei ja ein Punkt Objekt zurückgegeben |
Hast Du das im Debugger überprüft? Für mich sieht das nicht so aus.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!