romero: Array-Splice

Beitrag lesen

hallo ich bins wieder :)

wie setzte ich splice richtig ein, so das er alle werte eines array's löscht ausser die, wo die anzahl am höchsten ist?

was vor ab:

durch's anklicken von verschiedenen werten einer auswahlliste, erzeuge ich ein array mit unterschiedlichem inhalt. diesen lasse ich mir sortieren und wie gesagt, wenn entsprechende werte gleich sind, die dazugehörige anzahl.

aber wie kann ich, wenn es mehr als ein gleicher eintrag ist, den oder die vorherigen löschen?

hier mal ein code-auszug:

			var ZusatzmatteAuswählen = function()  
			{  
				var infile_zusatz_1 = new Array();  
				var infile_zusatz_2 = [];  
				var last = "";  
				var infile_zusatz_last = "";  
				var infile_zusatz_zaehler = 1;  
  
				var Zusatz_HTZ = document.Auswahl.Zusatz.options[document.Auswahl.Zusatz.selectedIndex].text;  
				var Zusatz_Variante = document.Auswahl.ZusatzVariante.options[document.Auswahl.ZusatzVariante.selectedIndex].text;  
  
				infile_zusatz = infile_zusatz.concat( Zusatz_HTZ + "_" + Zusatz_Variante );  
  
				infile_zusatz.sort();  
  
				var x = Zusatz_HTZ + "_" + Zusatz_Variante;  
  
				document.getElementById("msgs").innerHTML = "";  
  
				for( var i = 0; i < infile_zusatz.length; i++ )  
				{  
					if( last == infile_zusatz[i] )  
					{  
						infile_zusatz_zaehler++;  
  
					} else {  
							infile_zusatz_zaehler = 1;  
						}  
  
					last = infile_zusatz[i];  
  
					msg( infile_zusatz[i] + " / " + infile_zusatz_zaehler + "<br>" );  
  
					infile_zusatz_1 = infile_zusatz_1.concat( infile_zusatz[i] + "/" + infile_zusatz_zaehler );  
				}  
  
				for( var i = 0; i < infile_zusatz_1.length; i++ )  
				{  
					if( infile_zusatz_1[i].substr( 15, 1 ) > "1" )  
					{  
						infile_zusatz_1.splice( infile_zusatz_1[i].substr( 15, 1 )-i, 1 );  
  
						msg( i + " " + infile_zusatz_1[i] + "<br>" )  
					}  
				}  
			}

und das wäre mal ein resultat dieser liste:

die einzelnen einträge sortiert:

D258_70095_008 / 1
D258_70095_008 / 2
D258_70095_008 / 3
D258_70095_008 / 4
D258_70095_008 / 5
D258_70095_008 / 6
D258_70095_008 / 7
D258_70095_016 / 1
D258_70095_016 / 2
D258_70095_016 / 3
D258_70095_036 / 1
D258_70095_036 / 2

die angeblich letzten gelöschten einträge ausser den mit der höchsten anzahl:
1 D258_70095_008/3
2 D258_70095_008/5
3 D258_70095_008/7
5 D258_70095_016/2
7 undefined  -> und warum hier undefined?sollte doch 'D258_70095_036 / 2' hin

lg romero