ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
924
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    pchilfe ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    125
    Liebe Freunde,

    Ich habe folgendes Problem.

    Ich habe ein zweidimensionales Array das auch leere Zellen enthält. Ich möchte die Leere Zellen aus dem Array entfernen.

    Dafür habe folgende Schleife:

    HTML-Code:
    Arr = [[3,'A'],[],[2,'B'],[],[3,'C'],[4,'D'],[],[],[],[],[6,'E']];
    
       var Brr = new Array();
       for(var i=0; i<Arr.length; i++){
          Brr[i] = new Array(1);
          if(Arr[i][0]!='' && Arr[i][1]!=''){
              Brr[i][0]=Arr[i][0];
              Brr[i][1]=Arr[i][1];
              }
            }
    Wenn ich das Array Brr, nach dem aussortieren der leeren Zellen, ausgebe. Enthält immer noch die leere Zellen genau so wie das Array Arr.

    Warum
    Geändert von pchilfe (04.08.07 um 13:14 Uhr)
     
    pchilfe :-)

  2. #2
    Avatar von Sven Mintel
    Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.112
    Code :
    1
    
          Brr[i] = new Array(1);
    ...du erzeugst das neue Array-Element bereits bevor du prüfst, ob das dazugehörige Äquivalent leer ist.
    So sollte es besser gehen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    Arr = [[3,'A'],[],[2,'B'],[],[3,'C'],[4,'D'],[],[],[],[],[6,'E']];
     
       var Brr = new Array();
       for(var i=0; i<Arr.length; i++){
          
          if(Arr[i][0]!='' && Arr[i][1]!=''){
              Brr[i] = new Array(1);
              Brr[i][0]=Arr[i][0];
              Brr[i][1]=Arr[i][1];
              }
            }
     

  3. #3
    pchilfe ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    125
    Hallo,

    Das habe ich Propiert aber funktioniert nicht, weil die For-Scfleife angehalten wird.

    Das Array das ich bearbeiten möchte sieht so aus:
    HTML-Code:
    Produkte[0]='N*m*71835*Produkt1*665925*DE*23*0*0*0*0';
    Produkte[1]='O*m*164*Produkt2*6787*DE*19*0*0*0*0';
    .......
    Produkte[39]='O*f*199*Produkt39*6689583*DE*19*0*0*0*0';
    Aus dem Array Produkte muss ich bestimmte Produkte wählen und ausgeben:
    Zum Beispiel: Produkt-ID und Produkt-Name.

    HTML-Code:
       var Prr = new Array();
       
       for(var i=0; i<Produkte.length; i++){
    
                var ArrString = Produkte[i].split('*');
    
                   switch(ArrString[1]){
                        case 'f': // hier wird die Schleife angehalten. Verstehe ich nicht warum?
                         if(ArrString[0]=='N'){
                           Prr[i] = new Array(1);
                           Prr[i][0]=ArrString[6];
                           Prr[i][1]=ArrString[2]+':'+ArrString[3];
                           }
                         else{
                           Prr[i] = new Array(1);
                           Prr[i][0]=ArrString[6];
                           Prr[i][1]=ArrString[2]+':'+ArrString[3];
                           }
                      break;
                     }
                    }
    Mein Problem ist mit der Anweisung: Prr[i] = new Array(1);
    Wenn ich die Anweisung direkt nach der For-Schleife schreibe, wird ein 2dim Array erzeugt das auch leere Zellen enthält. Wenn ich die Anweisung: Prr[i] = new Array(1); direkt nach der IF-Bedingung mache, wird die Schlefe nach dem ersten case angehalten?

    Ich weiss nicht was ich tun soll ?

    Bitte um Hilfe .. vielen Dank im Vorraus.
    Geändert von pchilfe (04.08.07 um 17:38 Uhr)
     
    pchilfe :-)

  4. #4
    Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.559
    Hi,

    das Problem dürfte die Zählvariable i sein. Diese wird in jedem Durchlauf erhöht, das Array Prr muss
    jedoch nur bei einem "Treffer", dh. einem f eine neue Komponente erhalten.

    Du könntest eine extra Zählvariable für das Prr-Array mitlaufen lassen.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
       var Prr = new Array();
       [B]var intIndex = 0;[/B]
       
       for(var i=0; i<Produkte.length; i++){
     
                var ArrString = Produkte[i].split('*');
     
                   switch(ArrString[1]){
                        case 'f': // hier wird die Schleife angehalten. Verstehe ich nicht warum?
                         if(ArrString[0]=='N'){
                           Prr[[B]intIndex[/B]] = new Array();
                           Prr[[B]intIndex[/B]][0]=ArrString[6];
                           Prr[[B]intIndex[/B]][1]=ArrString[2]+':'+ArrString[3];
                           }
                         else{
                           Prr[[B]intIndex[/B]] = new Array();
                           Prr[[B]intIndex[/B]][0]=ArrString[6];
                           Prr[[B]intIndex[/B]][1]=ArrString[2]+':'+ArrString[3];
                           }
                      [B]intIndex++;[/B]
                      break;
                     }
                    }
    Zudem habe ich die Eins zum Dimensionieren des Arrays herausgenommen - wie schon von Sven angedeutet.

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Mediation[-exklusiv]
    Supervision im Konfliktmanagent D P

    New kind to realize large scalable projects with jQuery: jQuery SDK

  5. #5
    pchilfe ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    125
    Ja genau. Jetzt funktioniert alles wieder.
    sehr gut.
    Vielen Vielen Dank.
     
    pchilfe :-)

Ähnliche Themen

  1. [perl] Vorhandes Array [Name;Vorname/n] in zweidimensionales Array splitten
    Von FlockY im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 3
    Letzter Beitrag: 31.08.09, 18:53
  2. jxl: Leere Zellen
    Von joergh2 im Forum Java
    Antworten: 0
    Letzter Beitrag: 27.05.09, 08:59
  3. leere Zellen von SQL nicht ausgeben
    Von grazioli im Forum PHP
    Antworten: 9
    Letzter Beitrag: 13.03.09, 17:14
  4. Javascript zweidimensionales Array sortieren
    Von pchilfe im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 03.08.07, 12:57
  5. Leere Zellen in JTable
    Von dadon511 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 03.04.07, 11:56