Arrays bzw Array-Werte löschen
Mr Increment
- javascript
Morgen
Wie kann ich denn aus einem Array einträge löschen (also komplet entfernen, nicht nur leeren) wenn ich nur den Key habe?
Ich habe ein Array das so aussieht.
Array:
Key 1 = [IMG-Object],[IMG-Object],[IMG-Object],[IMG-Object]
Und wenn ich einige Objecte lösche sind sie natürlich nichtmehr im Array:
Key 1 = [IMG-Object],,,[IMG-Object]
Ich habe den KEy der zu entfernenden einträge komme aber mit Slice() auf keine Lösung. Wie benutzt man denn Slice in diesem Fall?
Ich will nur sagen: "Entferne Eintrag X aus Array Y Where Key = 'Z'"
Bin für Hlfen dankbar
ciao
Ich habe den KEy der zu entfernenden einträge komme aber mit Slice() auf keine Lösung. Wie benutzt man denn Slice in diesem Fall?
Ich will nur sagen: "Entferne Eintrag X aus Array Y Where Key = 'Z'"
Das geht mit einer Kombination von slice() und concat()
var a = new Array(1,2,3,4,5,6,7);
var index = 5;
var n = a.slice(0, index ).concat( a.slice( index + 1, a.length) );
alert(n);
Struppi.
Hi
Danke für die Antwort.
Ich habe gerade damit etwas herumgetüftelt und komme dabei aber auf kein brauchbares Ergebnis.
Kann es sein dass du den Index-Schlüssel vorraussetzt und ich aber den Schlüssel-Namen meinte?
Array('A','B','C')
Ich habe nur den Namen A weiss aber im Code nie ob A nun der erste Wert oder der 12. Wert ist.
Ich will daher über den Index-Namen ein Array entfernen.
Oder habe ich da jetzt einen denkfehler?
ciao und danke
Oder gibt es eine möglichkeit mit der ich fragen kann "Sag mir den Index-Wert vom Schlüssel mit dem Namen 'A'" mit dem ich wiederum dein beispiel nutzen könnte?
ciao
Oder gibt es eine möglichkeit mit der ich fragen kann "Sag mir den Index-Wert vom Schlüssel mit dem Namen 'A'" mit dem ich wiederum dein beispiel nutzen könnte?
Jetzt auch einen Nachtrag von mir kann es sein, dass du nicht mit einem Array arbeitest sondern mit einem Objekt?
Weil du immer von Schlüssel sprichst.
Ein Objekt attribut kannst du mit delete löschen.
Struppi.
ok =)
Ich fasse grade mal das zusammen was ich so getan habe:
Ich ahbe ein Array erstellt:
var myArr=new Array();
Diesem Array weise ich dynamisch ein weiteres Array zu welche ich wiederum mit Objekten belege:
//123 ist ein dynamischer wert der
//beim durchlaufen des scripts entsteht
var myArr[123]=new Array();
var myArr[123][0]=new Image();
Paralel dazu habe ich noch Arrays die mit der gleichen Art laufen nur dass denen stat ein objekt Infos beigefügt werden wie z.B. eine Höhhe von etwas in Pixeln und auch ob sie aktiv sind oder nicht.
Wenn ich nun hingehe und sage
delete myArr[123][0];
wird nur das Objekt gekillt, nicht aber im paralelen Array der Wert mit dem namen 0. Ich muss also einen weg finden anhand des Namens den wert auch aus dem paralel laufenden Array zu kicken.
ciao
Hi,
> var myArr=new Array();
> //123 ist ein dynamischer wert der
> //beim durchlaufen des scripts entsteht
> var myArr[123]=new Array();
> var myArr[123][0]=new Image();
Paralel dazu habe ich noch Arrays die mit der gleichen Art laufen nur dass denen stat ein objekt Infos beigefügt werden wie z.B. eine Höhhe von etwas in Pixeln und auch ob sie aktiv sind oder nicht.
Also etwas in dieser Art?
var myArr[123][1] = width;
var myArr[123][2] = hight;
var myArr[123][3] = rgb;
var myArr[123][4] = comment;
Oder eher so?
var anotherArray[456] = new Array();
var anotherArray[456][1] = width;
var anotherArray[456][2] = height;
[...]
Oder doch eher eine der möglichen Zwischenlösungen?
Wenn ich nun hingehe und sage
delete myArr[123][0];
wird nur das Objekt gekillt, nicht aber im paralelen Array der Wert mit dem namen 0. Ich muss also einen weg finden anhand des Namens den wert auch aus dem paralel laufenden Array zu kicken.
Diese Arrays sind doch irgendwie verbunden, oder? Dann sollte es doch ein Leichtes sein dafür Sorge zu tragen, das nur Werte von tatsächlich vorhandenen Objekten abgefragt werden. Da jede Zuweisung eine vollständige Überschreibung des Ursprungswertes bedeutet mußt Du die paar Integer nicht unbedingt auch noch dem Müllsammler vermachen.
so short
Christoph Zurnieden
gruss Mr. Increment,
Oder gibt es eine möglichkeit mit der ich fragen kann "Sag mir den
Index-Wert vom Schlüssel mit dem Namen 'A'" mit dem ich wiederum
dein beispiel nutzen könnte?
fuer String-objekte bieten sich bei aehnlicher problemstellung die
methoden "indexOf" sowie "lastIndexOf" an. wirft man dem forumsarchiv
diesen brocken - [+javascript +array +prototype +indexOf] - hin,
stoesst man unter anderem auch auf:
http://forum.de.selfhtml.org/archiv/2003/7/t52313/#m288714 sowie auf
http://forum.de.selfhtml.org/archiv/2004/3/t76705/#m442153.
die neuesten mozilla-engines unterstuetzen diese und andere array-
methoden jetzt auch von haus aus.
by(t)e by(t)e - peterS. - pseliger@gmx.net
Ich habe gerade damit etwas herumgetüftelt und komme dabei aber auf kein brauchbares Ergebnis.
Kann es sein dass du den Index-Schlüssel vorraussetzt und ich aber den Schlüssel-Namen meinte?
Array('A','B','C')
Ich habe nur den Namen A weiss aber im Code nie ob A nun der erste Wert oder der 12. Wert ist.
Ich will daher über den Index-Namen ein Array entfernen.
Oder habe ich da jetzt einen denkfehler?
Wieso Name du meinst Wert?
Um einen bestimmten Wert löschen zu können musst du erst den Index herausfinden.
Struppi.