Ersatz für splice()?
Rabe
- javascript
0 Antje Hofmann0 peterS.
Hallo,
ich suche einen Ersatz für die Methode splice(), mit der man aus einem Array ein *beliebiges* (also nicht nur das letzte) Element entfernen kann. Den Ersatz suche ich deshalb, weil u.a. der Mac-IE weder push() noch splice() implementiert hat, und ich keine Minderheiten-Diskriminierungen vorhabe.
Derowegen ist es notwendig, die splice()-Methode sozusagen von vorne bis hinten von Hand zu programmieren. Hat hier jemand ne Idee?
Thanks in advance.
Rabe
Hallo Rabe,
ich suche einen Ersatz für die Methode splice(), mit der man aus einem Array ein *beliebiges* (also nicht nur das letzte) Element entfernen kann. Den Ersatz suche ich deshalb, weil u.a. der Mac-IE weder push() noch splice() implementiert hat, und ich keine Minderheiten-Diskriminierungen vorhabe.
Derowegen ist es notwendig, die splice()-Methode sozusagen von vorne bis hinten von Hand zu programmieren. Hat hier jemand ne Idee?
ja aber sicher doch
definiere eine Funktion, der du als Parameter das Array und den Schlüssel des zu entfernenden Elementes übergibst
definiere in der Funktion eine lokale Variable vom Typ Array
durchlaufe das übergebene Array mit einer for-in-Schleife
prüfe ob der Schlüssel des durchlaufenden Elementes mit dem übergebenen Schlüssel übereinstimmt
=> wenn ja, beginne den nächsten Durchlauf
=> wenn nein, füge das Element dem vorher definierten lokalen Array zu
bei indizierte Arrays als das nächste Element
bei assoziativen Arrays erfolgt die Definition über den Schlüssel und den Wert
gebe nach der Abarbeitung der Schleife das lokale Array zurück
Viele Grüße
Antje
Hallo Antje Hofmann,
danke für die grundlegenden Erklärungen. Danke auch an peterS. Durch die Links war ich schon ziemlich durch, und bin draus nicht richtig schlau geworden.
Ich glaube ich bin schon recht nahe dran. Nur die Entfernung des richigen Elements will nicht so recht klappen.
Hier mein jetziger (fünfter) Ansatz:
function removeElem(str)
{
for(var i = 0; i < arr.length; i++)
{
if(arr[i] == str)
{
for(var j = 0; j < arr.length; j++)
{
arr[j] = arr[j + 1];
}
arr.length = arr.length - 1;
break;
}
}
}
str wird übergeben, und arr (das indizierte Array) liegt als globale Variable vor.
Leider wird durch den Ansatz nicht immer das richtige Element entfernt. Vielleicht kannst du mir nochmals auf die Sprünge helfen?
Thanks
Rabe
hallo again Rabe,
Hier mein jetziger (fünfter) Ansatz:
function removeElem(str)
{
...
Dein ehrgeiz ehrt Dich;
... Durch die Links war ich schon ziemlich durch, und bin
draus nicht richtig schlau geworden.
das ist ueberhaupt kein problem -
der code ist dazu da, einem js-client, der die von Dir
nachgefragten Array-methoden nicht implementiert hat,
genau diese beizubringen;
moderne browser ignorieren diese nachhilfe;
fueg die zeilen einfach Deinem bisherigen code
hinzu, und Dir stehen fuer jeden js-faehigen
client, der das Array-objekt kennt, die vorher
so sehr vermissten methoden zur verfuegung;
by(t)e by(t)e - peterS. - pseliger@gmx.net
--
sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)
gruss Rabe
fuehrt Dich unter anderem auch auf:
http://www.faqts.com/knowledge_base/view.phtml/aid/3838/fid/144
viel spass und by(t)e by(t)e - peterS. - pseliger@gmx.net
--
sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)