• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

mehrere Parameter aus function zurückgeben

DTC

New member
Hallo,
ich habe mir eine recht komplexe Aufgabe die ich mit Javascript lösen möchte gestellt und bin damit schon recht weit gekommen.
Um jedoch den Code zu vereinfachen, beziehungsweise für weitere Optimierungen gerüstet zu sein, möchte ich eine Berechnung mit Hilfe einer Funktion umsetzen.
Dieser Funktion sollen drei Arrays übergeben werden und als Ergebnis erhalte ich drei weitere Arrays die zurückgegeben werden sollen.
Kann man das eigentlich mit JavaScript hinbekommen?
 
Pack es in ein Object:
HTML:
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>arrays</title>
</head>
<body>

<script>
	"use strict";
	var obj = test();
	alert(obj.a[0]+' * '+obj.b[0]+' * '+obj.c[0]);
	function test() {
		var a = [1,2];
		var b = ['foo','bar'];
		var c = ['a','b'];
		return {a,b,c};
	}
</script>

</body>
</html>
 
Besten Dank für schnelle gute Antwort. Ich habe bisher noch nicht mit Objekten gearbeitet und verstehe noch nicht, warum das die Lösung ist. Aber ich habe mit deinem Code meine Problemstellung noch mal etwas nachgestellt und komme damit weiter. Nochmals ganz herlichen Dank!

HTML:
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>arrays</title>
</head>
<body>

<script>
	"use strict";
	var obj = test();
	var i = 0;
//*	alert(obj.a[1]+' * '+obj.b[0]+' * '+obj.c[1]);
	function test() {
		var a = [1,2];
		var b = ['foo','bar'];
		var c = ['a','b'];
		return {a,b,c};
	}
	var zahlenreihe = new Array (2);
	var woerter = new Array (2);
	var buchstaben = new Array (2)
	zahlenreihe = obj.a;
	woerter = obj.b;
	buchstaben = obj.c;
	
	for (i=0; i<=1; i++){
		document.write("Zahlenreihe_" + i +":"+ zahlenreihe[i]);
		document.write("___Woerter_" + i +":"+ woerter[i]);
		document.write("___Buchstaben_" + i +":"+ buchstaben[i] + "<br/>");
		}

</script>

</body>
</html>
 
Zuletzt bearbeitet von einem Moderator:
In manchen Sprachen nennt man es Hash. Und das ist die Lösung weil es wie ein Container wirkt. Aber häufig reicht es auch, die Variablen einen höher (aber nicht global!) zu deklarieren, dann braucht man sie nicht hin und her geben.
 
In dem Code ist ein "Syntax"-Fehler:return {a,b,c}; muss return {a:a,b:b,c:c}; heißen. Diese neue Schreibweise wurde mit ES6 eingeführt und wird noch nicht von allen Browsern unterstützt: https://developer.mozilla.org/en-US...ators/Object_initializer#Property_definitions

PS: Verwende statt document.write() lieber console.log(), wenn du rumprobierst und Zwischenergebnisse sehen willst - die (Fehler-)Konsole sollte sowieso immer offen sein.

Zu document.write:
http://www.w3.org/html/wg/drafts/html/CR/webappapis.html#dynamic-markup-insertion schrieb:
This method has very idiosyncratic behavior. In some cases, this method can affect the state of the HTML parser while the parser is running, resulting in a DOM that does not correspond to the source of the document (e.g. if the string written is the string "<plaintext>" or "<!--"). In other cases, the call can clear the current page first, as if document.open( ) had been called. In yet more cases, the method is simply ignored, or throws an exception. To make matters worse, the exact behavior of this method can in some cases be dependent on network latency, which can lead to failures that are very hard to debug. For all these reasons, use of this method is strongly discouraged.
 
Achso, du beziehst dich auf DTC' Code? Den hatte ich garnicht gesehen, dachte es bezöge sich auf meinen. Den hab ich ja im IE laufen lassen.
 
Ach du Schande, Asche auf mein Haupt. Hab ich das tatsächlich im FF getestet, was ich sonst nie mache, weil der FF m.E. Mist ist. Und zack, gleich hat man Fehler drin. Sorry DTC, war keine Absicht!
Danke Korbinian, dass dir das aufgefallen ist.
 
Ist ja in ES6 kein Fehler... nur leider wird das hald einfach noch nicht von allen Browsern unterstützt.
 
Zurück
Oben