2016-08-09 53 views
0

Ich habe ein Skript here erstellt, das einige Daten aus einem .JSON extrahiert und ein Objekt damit erstellt. Der Code funktioniert, aber ich muss Quelle und Destination zu einer Klasse hinzufügen, damit ich es exportieren und mit anderen Dateien verwenden kann.Ändern von Code zur Verwendung von Klassen

Also habe ich meinen Code neu geschrieben, um alle Daten in Klasse here zu speichern. Relevante Teile unten zeigen:

const source = []; 
const destination = []; 

class Values { 
    constructor(source_address, source_lat, source_lng, 
     dest_address, dest_lat, dest_lng, scan_type) { 
     this.source_address = source_address; 
     this.source_lat = source_lat; 
     this.source_lng = source_lng; 
     this.dest_address = dest_address; 
     this.dest_lat = dest_lat; 
     this.dest_lng = dest_lng; 
     this.scan_type = scan_type; 
    } 
}; 
//block is each section of the array 
obj.forEach(block => { 
    source.push({ 
     id: Values.source_lat + Values.source_lng, 
     "source-lat": Values.source_lat, 
     "source-lng": Values.source_lng, 
     "source_address": Values.source_address, 
     x: { 
      valueOf: function() { 
       var latlng = [ 
        Values.source_lat, 
        Values.source_lng 
       ]; 
       var xy = map.FUNCTION_FOR_CONVERTING_LAT_LNG_TO_X_Y(latlng); 
       return xy[0]; 
      } 
     }, 
     y: { 
      valueOf: function() { 
       var latlng = [ 
        Values.source_lat, 
        Values.source_lng 
       ]; 
       var xy = map.FUNCTION_FOR_CONVERTING_LAT_LNG_TO_X_Y(latlng); 
       return xy[1]; 
      } 
     } 
    }); 
}); 

Aber es gibt:

[ 
    { 
    "id": null, 
    "x": {}, 
    "y": {} 
    } 
] 

Warum sind die alle Datenwerte lesen als null? Wie soll ich dieses Problem beheben?

+0

Sie versuchen, Eigenschaften zuzugreifen, wie sie statisch ('Values.foo') sind, aber sie sind Setup als Instanzeigenschaften und erfordern' neue Werte (...) ' –

+0

Code relevant für das Verständnis der Frage und das Angebot einer Lösung MUSS in Ihre Frage eingefügt und entsprechend formatiert werden. Es ist die Politik dieser Website, dass relevante Informationen nicht nur über externe Links verfügbar sind. Für den Anfang neigen diese externen Links dazu, sich im Laufe der Zeit zu ändern oder zu verschwinden, was diese Frage wertlos macht als eine Sammlung von interessanten Fragen/Antworten, was ein Teil dessen ist, worum es bei stackoverflow geht. – jfriend00

+0

repariert @ jfriend00 – Edon

Antwort

0

Sie initialisieren nicht einmal Values? Wie würden Sie erwarten, dass alles zurückkommt?

Bevor Sie Ihre Loops tun müssen Sie es mit einigen Daten initialisieren, etwa so:

var valueClass = new Value(--your constructor values here--); 

dies tun Sie in der Lage sein, Ihre Klassenwerte zuzugreifen, z valueClass.dest_address.

Ein Beispiel mit einem kleinen Ausschnitt aus Code:

var valueClass = new Value(--your constructor values here--); 

//block is each section of the array 
obj.forEach(block => { 
    source.push({ 
     id: valueClass.source_lat + valueClass.source_lng, 
+0

Richtig, ich habe vergessen, Werte zu initialisieren. Dies gibt jedoch immer noch Nullwerte zurück: var valueClass = new Werte (source_address, source_lat, source_lng, dest_address, dest_lat, dest_lng, scan_type); ... Auch wenn ich den Variablennamen damit vorangehe. – Edon