Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-03-2006, 16:23   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 10
Question splice() funzt in Array.prototype nicht

Hi folks,

wollte ein Prototype erstellen, welcher mir ein Array mit Zufallszahlen füllt.

x0 = Min Value z.B. 1
x1 = Max Value z.B. 49
num = Zahlenmenge welche ünernommen werden soll z.B. 6


Code:
Array.prototype.fillRandomNum = function(x0, x1, num) {
	for (var i = x0; i <= x1; i++) {
		this.push(i);
	}
	this.sort(function () {
		return (random(3) - 1);
	});
	this = this.splice(0, (num ? num : this.length));
};

theArray = [];
theArray.fillRandomNum(1, 49, 6);
Leider gibt er mir ein Array zurück, das alle Zahlen zwischen 1 und 49 enthält. Die Schleife und die Sotiertmethode funzt also, nur die splice-Methode nich...?

Please help!
tomez ist offline   Mit Zitat antworten
Alt 07-03-2006, 16:40   #2 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Willkommen im Forum!

Du verwendest Array.splice falsch.
Array.slice wäre die Funktion die du so einsetzen könntest, wie du es gerade vorhast, allerdings halte ich es für eine schlechte Idee, this zu überschreiben.

Da Array.splice ein bestehendes Array verändert könntest du die hinteren (nicht benötigten) Elemente mit this.splice(num, this.length) abschneiden.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 07-03-2006, 18:36   #3 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
x0 und x1 sind recht anonyme bezeichnungen. eine sinnvolle namensgebung verringert die fehlermöglichkeiten und erspahrt unnötige beschreibungen ;-)
wobei eine beschreibungen kein fehler ist.
Code:
// gibt anzahl zufallszahlen zurück, im zahlenwert von..bis
Array.prototype.fillRandomNum = function(von, bis, anzahl) {
	while (von<=bis) {
		this.push(von++);
	}
	this.sort(function () {
		return (random(3)-1);
	});
	if (anzahl && anzahl <this.length) {
		this.length = anzahl;
	}
};
//
theArray = [];
theArray.fillRandomNum(5, 49, 6);
trace(theArray.join(','));
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (07-03-2006 um 18:41 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 08-03-2006, 09:32   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 10
Thumbs up

Danke Jungs!

@Janoscharlipp: okay, da hätte ich eigentlich drauf kommen können Danke für den Hinweis!
@hgseib: die namensgebung hab ich auch geändert - muss aber leider immer alles in englisch halten

Code:
Array.prototype.fillRandomNum = function(from, to, num) {
	for (var i = from; i <= to; i++) {
		this.push(i);
	}
	this.sort(function () {
		return (random(3) - 1);
	});
	this.splice((num ? num : this.length), this.length);
};
...so funzt das nun wunderbar!
tomez ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele