Onkel Schnitzel: Schlüsselposition eines Array in Variable speichern

Beitrag lesen

Mit der Referenz könntest du dann arbeiten:

var spielzeit = Spielerdaten[0][0];

var test = spielzeit.x; // lesen
spielzeit.x = 90; // schreiben


>   
> Das dürfte Ernüchterung bringen.  
  
Nö, tuts nicht. Das sieht irgendwie schon sauberer ist und kommt dann halt dem näher, was man z.B. von jQuery her kennt.  
  
  

> Oder Variante 2:  
> ~~~javascript

var test = [0,1,2];  

> test.forEach( function( val, i, src ){ src[i] = val * 10 } );

Oder Variante 3:

var test = [0,1,2];

test = test.map( function( x ){ return x * 10; } );


>   
> Wie weit die Beispiele auf deinen konkreten Anwendungsfall übertragbar sind, kann ich dir natürlich nicht verraten. Aber du darfst gern noch was mehr Code zeigen.  
  
Ich glaube, damit wäre mein Code schon optimierbar, das wäre sicherlich viel schneller. Manchmal geht es halt schneller redundanten Spaghetticode zu schreiben, also zumindest dann, wenn man sich erst reindenken muss und nicht der Hellste is :-)  
  
Ich setze meine betreffende Funktion einfach mal mit rein, auch wenn das sicherlich nicht das Gelbe vom Ei ist. Sie tut aber erstmal was sie soll, sie berechnet die Einsatzzeit eines Spielers in einem Spiel anhand verschiedener Werte aus einem mehrdimensionalen Array und schreibt diese Zeit dann ebenfalls in das Array.  
  
Na ich bin ja mal gespannt... :-)  
  
~~~javascript
  
function sumSpielzeit(id) {                     // id übergibt die ID des Spielers  
	var zeit = 90;  
	var einsatz = SpielerdatenArray[id][0]; // Einsatz 0/1  
	var eingew = SpielerdatenArray[id][2]; 	// Einwechslung 0/Minute  
	var ausgew = SpielerdatenArray[id][3]; 	// Auswechselung 0/Minute  
	var gelb_rot = SpielerdatenArray[id][6];  // Gelb-Rot 0/Minute  
	var rot = SpielerdatenArray[id][7];     // Rot 0/Minute  
		  
	// wenn kein Einsatz, alle Werte des Spieler-Arrays auf 0  
	if (einsatz === 0) {  
		for (n in SpielerdatenArray[id]) {  
			SpielerdatenArray[id][n] = 0;  
		}  
	}  
	// wenn Einsatz=1  
	else {  
		// wenn Spieler eingewechselt  
		if(eingew !== 0) {  
			// wenn Spieler ausgewechselt  
			if(ausgew !==0) {  
				SpielerdatenArray[id][1] = (ausgew)-(eingew);				  
			}  
			// wenn raus durch gelb_rot  
			else if(gelb_rot !==0) {  
				SpielerdatenArray[id][1] = (gelb_rot)-(eingew);							  
			}  
			// wenn raus durch rot  
			else if(rot !==0) {  
				SpielerdatenArray[id][1] = (rot)-(eingew);							  
			}  
			// wenn nur eingewechselt  
			else {  
				SpielerdatenArray[id][1] = zeit-(eingew-1);					  
			}  
		}  
		  
		// wenn Spieler nicht eingewechselt  
		else {  
			// wenn Spieler ausgewechselt...  
			if(ausgew !==0) {  
				SpielerdatenArray[id][1] = ausgew-1;  
			}  
			else if(gelb_rot !==0) {  
				SpielerdatenArray[id][1] = gelb_rot-1;					  
			}  
			else if(rot !==0) {  
				SpielerdatenArray[id][1] = rot-1;					  
			}  
			// wenn weder ein- noch ausgewechselt  
			else {  
				SpielerdatenArray[id][1] = zeit;  
			}				  
		}  
  
	} // else einsatz  
	  
	document.getElementById('zeit['+id+']').innerHTML = SpielerdatenArray[id][1];  
	  
} // function