2016-08-09 9 views
0

Ich versuche ein Stück Javascript zu schreiben, das ein Array erstellt. Innerhalb des Arrays ist die Syntax streng, da sie dann von einem MapViewer analysiert werden muss. Allerdings kann ich nicht finden, warum jedes Mal, wenn ich ein Element in mein Array schiebe, dieses Element Zitate in der Nähe hat?Warum Javascript Unshift-Methode zitiert?

Hier ist mein Code:

var i = 0; 
 
var j = 0; 
 
var tempMarkers = []; 
 
while (clusters.length - i > 0) { 
 

 
    if (i % 3 == 0) { 
 
    for (j = 0; j < clusters[i].length; j++) { 
 
     tempMarkers.unshift("{latitude:" + tempLocationsArray[clusters[i][j]][1] + ",longitude:" + 
 
     tempLocationsArray[clusters[i][j]][0] + ",tintColor: MapView.PinColors.GREEN}"); 
 
    } 
 

 
    } else if (i % 3 == 1) { 
 

 
    for (j = 0; j < clusters[i].length; j++) { 
 
     tempMarkers.unshift("{latitude:" + tempLocationsArray[clusters[i][j]][1] + ",longitude:" + 
 
     tempLocationsArray[clusters[i][j]][0] + ",tintColor: MapView.PinColors.RED}"); 
 
    } 
 

 
    } else { 
 

 
    for (j = 0; j < clusters[i].length; j++) { 
 
     tempMarkers.unshift("{latitude:" + tempLocationsArray[clusters[i][j]][1] + ",longitude:" + 
 
     tempLocationsArray[clusters[i][j]][0] + ",tintColor: MapView.PinColors.PURPLE}"); 
 
    } 
 
    } 
 

 
    i++; 
 
} 
 
console.log(tempMarkers);

Und das ist, was ich in der Konsole sehen:

["{latitude:37.33182081,longitude:-122.03038642,tintColor: MapView.PinColors.RED}", 
    "{latitude:37.33178632,longitude:-122.0306262,tintColor: MapView.PinColors.GREEN}", 
    "{latitude:37.33162007,longitude:-122.03070577,tintColor: MapView.PinColors.PURPLE}", 
    "{latitude:37.33142585,longitude:-122.03072774,tintColor: MapView.PinColors.RED}", 
    "{latitude:37.33124551,longitude:-122.03073664,tintColor: MapView.PinColors.GREEN}", 
    "{latitude:37.33108059,longitude:-122.03068245,tintColor: MapView.PinColors.PURPLE}", 
    "{latitude:37.33091383,longitude:-122.03061321,tintColor: MapView.PinColors.RED}", 
    "{latitude:37.3307498,longitude:-122.03054302,tintColor: MapView.PinColors.GREEN}", 
    "{latitude:37.33069778,longitude:-122.03035543,tintColor: MapView.PinColors.PURPLE}", 
    "{latitude:37.33067203,longitude:-122.03018068,tintColor: MapView.PinColors.RED}", 
    "{latitude:37.33067784,longitude:-122.02998825,tintColor: MapView.PinColors.GREEN}", 
    "{latitude:37.33068906,longitude:-122.02976028,tintColor: MapView.PinColors.PURPLE}", 
    "{latitude:37.33070167,longitude:-122.02952527,tintColor: MapView.PinColors.RED}", 
    "{latitude:37.33045837,longitude:-122.02866686,tintColor: MapView.PinColors.GREEN}", 
    "{latitude:37.32795258,longitude:-122.01982651,tintColor: MapView.PinColors.PURPLE}", 
    "{latitude:37.32465631,longitude:-122.02308996,tintColor: MapView.PinColors.RED}", 
    "{latitude:37.32632152,longitude:-122.02614004,tintColor: MapView.PinColors.GREEN}", 
    "{latitude:37.33070542,longitude:-122.02915124,tintColor: MapView.PinColors.PURPLE}", 
    "{latitude:37.33019844,longitude:-122.02479669,tintColor: MapView.PinColors.RED}", 
    "{latitude:37.32463343,longitude:-122.0228739,tintColor: MapView.PinColors.GREEN}" 
] 

Sehen Sie den Grund, warum ich diese Zitate haben?

+1

Ihr Array enthält keine Anführungszeichen, aber es funktioniert Zeichenfolgen enthalten - die in der Konsole mit Anführungszeichen angezeigt, so ... – nnnnnn

+0

Natürlich danke @nnnnnn! – Custam

Antwort

2

Sie übergeben es als String mit doppelten Anführungszeichen, deshalb zeigt es es dort. Das ist nicht wegen der Unshift.

tempMarkers.unshift("{latitude:" + tempLocationsArray[clusters[i][j]][1] + ",longitude:" + 

Versuchen Sie unten die Syntax zum Erstellen von Hash, um doppelte Anführungszeichen zu vermeiden.

tempMarkers.unshift({"latitude": tempLocationsArray[clusters[i][j]][1] , "longitude": tempLocationsArray[clusters[i][j]][0], "tintColor": MapView.PinColors.GREEN}); 
+1

Funktioniert gut, danke @Pardeep Dhingra! – Custam

Verwandte Themen