Element aus array löschen
Mario
- javascript
0 Andreas Lindig0 molily
Hallo Forum,
ich verzweifele gerade an einer JavaScript-Funktion.
ich habe ein array mit Elementen und möchte nun ein bestimmtes Element löschen. id bezeichnet den Inhalt des zu löschenden Elements.
for (l=0;l<container.length;l++)
{
if (container[l]==id)
{
if (l==0)
container.shift();
else if (l==marked.length-1) container.pop();
else
{
cuta=marked.slice(0,l-1);
cutb=marked.slice(l+1,marked.length-1);
marked=cuta+cutb;
}
}
}
Es geht um die Stelle, wenn das Element mitten im array liegt.
auch marked=cuta.concat(cutb); anstatt marked=cuta+cutb; funktioniert nicht.
Was mache ich falsch?
Hallo Mario,
for (l=0; l<container.length; l++)
{
if (container[l]==id)
{
if (l==0)
container.shift();
else if (l==marked.length-1)
container.pop();
else
{
cuta=marked.slice(0,l-1);
cutb=marked.slice(l+1,marked.length-1);
marked=cuta+cutb;
}
}
}
Einzüge helfen dem Helfer doch ungemein (übrigens auch dem Programmierer). Das andere ist schlicht unhöflich.
Es geht um die Stelle, wenn das Element mitten im array liegt.
auch marked=cuta.concat(cutb); anstatt marked=cuta+cutb; funktioniert nicht.
_auch_ oder _eigentlich_? Ich hab jetzt nicht verstanden, ob slice() denn bei Dir richtig funktioniert. Ich hab's noch nicht getestet, aber die Array-Funktionen in JS scheinen mir eher fragwürdig: concat() ist unzuverlässig und pop() auch.
cuta+cutb _statt_ concat() geht natürlich nicht. Ich mache das in einer Schleife, in der ich Element für Element des einen Arrays an das andere dranhänge. Ist leider lästig und langsam, aber es funktioniert :=)
und was ist denn 'marked'? hast Du da nicht zwei Arrays durcheinander geworfen?
Gruß, Andreas
Hallo,
ich habe ein array mit Elementen und möchte nun ein bestimmtes Element löschen. id bezeichnet den Inhalt des zu löschenden Elements.
Was spricht gegen ein einfaches splice für alle drei Fälle?
if (container[l]==id)
{
container.splice(l, 1);
}
Es geht um die Stelle, wenn das Element mitten im array liegt.
auch marked=cuta.concat(cutb); anstatt marked=cuta+cutb; funktioniert nicht.
So sollte es funktionieren (obschon slice wie gesagt alleine reicht):
var cuta = container.slice(0, l);
var cutb = container.slice(l + 1, container.length);
container.splice(0, container.length);
container = container.concat(cuta).concat(cutb);
Vielleicht braucht MSIE andere Parameter (siehe die Hinweise bei http://de.selfhtml.org/javascript/objekte/array.htm#slice).
Mathias