• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

2 werte in array an selber stelle speichern

hallo,

ich würde gerne 2 werte an der selben stelle im selben array speichern. ich wollte zunächst fragen, ob das überhaupt geht.
ich habe mal sowas mit variablen gesehen und eingesetzt. da wurde mir hier (soweit ich mich recht erinnere) erklärt dass man das Objekte nennt
da sah das so ungefähr so aus:
Code:
function hallo() {
....
return {
x: 20, y:30
};
var zahlen=hallo();
//und man konnte die beiden Objekte so ansprechen:
zahlen.x=...
zahlen.y=...
}
ich würde aber gerne Koordinaten in ein Array "position" speichern; ich weiß aber nicht, wie das geht.
so ähnlich stelle ich mir das vor:
Code:
var position = new Array();
position[0].x=20;
position[0].y=30;
so geht es nicht.. muss ich erst die objekte x und y erstellen? geht das überhaupt?

viele grüße
 
Werbung:
Ungetestet:

Code:
var positions = [];
positions.push({x: 20, y: 30});
positions.push({x: 15, y: 35});

console.log(positions);

[] ist ein Shortcut zur Erzeugung eines Arrays, {} zur Erzeugung eines Objekts.
 
schonmal gut dass es geht und danke für die Antwort :)
Aber wie lege ich fest an welcher stelle von Position diese Objekte erstellt werden sollen? Push verlängert das Array ja.
Oder kann ich dann einfach schreiben
Code:
var position = [];
position[0]=3;
Position.push({x:20, y:30});//erstellt die Objekte an der stelle 1
position[1].x=20;//ändert den Wert des Objekts x an der stelle 1

wie würde ich ein Objekt an einer bereits existierenden stelle im Array erstellen?

Gruß
 
Werbung:
Code:
position[0] = { x: 20,y: 30 };
position[1] = { x: 40,y: 50 };

müsste eigentlich klappen.
 
ich will in einem array koordinaten verschiedener punkte speichern. bisher habe ich immer 2 arrays pro Liste benutzt:
Code:
for (a=0; a<=closedList.length; a++){    
    if(!(closedList_x[a]+10 in closedList_x)){
        openList_x[openList_x.length]=closedList_x[a]+10;
        openList_y[openList_y.length]=closedList_y[a];
    }
    if(!(closedList_x[a]-10 in closedList_x)){
        openList_x[openList_x.length]=closedList_x[a]-10;
        openList_y[openList_y.length]=closedList_y[a];
    }
    if(!(closedList_y[a]+10 in closedList_x)){
        openList_x[openList_x.length]=closedList_x[a];
        openList_y[openList_y.length]=closedList_y[a]+10;
    }
    if(!(closedList_y[a]-10 in closedList_x)){
        openList_x[openList_x.length]=closedList_x[a];
        openList_y[openList_y.length]=closedList_y[a]-10;
    }
}
jetzt brauche ich nur noch 2 arrays openList und closedList statt 4.
dazu reicht theoretisch das was du schon geschrieben hast, aber der vollständigkeit wegen würde ich gerne auch wissen, wie ich an eine stelle die bereits belegt ist diese objekte erzeuge. ich probiere mal den lösungsvorschlag von threadi. danke dafür ;)
und was das werden soll: ein A* algorithmus

EDIT:
jetzt sieht das doch besser aus :)
Code:
if(!(closedList[a].x+10 in closedList.x)){        
              openList.push({x: closedList[a].x+10, y: closedList[a].y}); 
}

viele grüße
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben