Der_Benny: Werte aus einem Array loeschen

Hallo zusammen,

ich hoffe einer kann meinen Fehler erkennen.

Folgende Funktion soll eigentlich nur einen Wert aus einem Array rauslöschen. Um danach wieder einen sauberen Array zu bekommen (ohne das vorne oder hinten ein NULL-Wert drin ist) hab ich die zig if else Abfragen drin.

Lasse ich die durchaus verwirrende Prüfung weg, ob die Variablen 'vorne' oder 'hinten' leer sind - dann funktioniert der 'split' einwandfrei, wenn die Prüfung drin ist bekomme ich die Meldung:
Das Objekt unterstützt die Eigenschaft oder Methode nicht. (In Bezug auf
die letzte Zeile (Datumsliste...)

Erläuterung:
Der Funktion übergebe ich in der var loeschen den Index des Array 'Datumsliste' welcher raus soll...

  
function loesche_Datum(loeschen){  
	var vorne=Datumsliste.slice(0,loeschen);  
	var hinten=Datumsliste.slice(loeschen+1,Datumsliste.length);  
	var neuerarr='';  
	delete(Datumsliste);  
	Datumsliste = new Array();  
	if (vorne == ''){  
		if (hinten == ''){  
			neuerarr='';  
		} else {  
		neuerarr=hinten;  
		}  
	} else {  
		if (hinten == ''){  
		neuerarr=vorne;	  
		} else {  
			neuerarr=vorne + ',' + hinten;  
		}  
	}  
		  
	alert ('>' + neuerarr + '<');	  
	Datumsliste = neuerarr.split(',');  
}  

  1. Hi,

    Folgende Funktion soll eigentlich nur einen Wert aus einem Array rauslöschen.

    Dann verstehe ich nicht, wieso darin überhaupt split vorkommt.

    Lasse ich die durchaus verwirrende Prüfung weg, ob die Variablen 'vorne' oder 'hinten' leer sind - dann funktioniert der 'split' einwandfrei, wenn die Prüfung drin ist bekomme ich die Meldung:
    Das Objekt unterstützt die Eigenschaft oder Methode nicht. (In Bezug auf
    die letzte Zeile (Datumsliste...)

    alert ('>' + neuerarr + '<');
    Datumsliste = neuerarr.split(',');

    Und von welchem Typ ist neuerarr? (Mit dem typeof-Operator prüfen.)

    Wäre es nicht einfacher, wenn du nur Array.splice verwendest?

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  2. Alles Quatsch,

    ich hab es nun schlanker wie folgt gelöst:

      
    	var i=0;  
    	var Datumsliste_neu=new Array();  
    	  
    	while (i < Datumsliste.length){  
    		if (i != loeschen){  
    			Datumsliste_neu.push(Datumsliste[i]);  
    		}  
    		i++;  
    	}  
    	delete(Datumsliste);  
    	Datumsliste=Datumsliste_neu;  
    
    

    Macht natürlich mehr Sinn und ist Schlanker.

    Danke für die Mühen

    1. Hi,

      Macht natürlich mehr Sinn und ist Schlanker.

      Besonders sinnvoll und besonders schlank ist es immer noch nicht.

      MfG ChrisB

      --
      “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
      1. Hi,

        Macht natürlich mehr Sinn und ist Schlanker.

        Besonders sinnvoll und besonders schlank ist es immer noch nicht.

        MfG ChrisB

        Ok, alles klar.

        Wer sich splice mal genauer ansieht kann auch damit arbeiten ;-)
        Ich bin mit den Augen bei dem Wort "ersetzen" immer weggesprungen, ok man kann aber auch normal damit löschen.

        Hier nun endlich ordentlich:

          
        Datumsliste.splice(loeschen,1);  
        
        

        und gut...

        Danke