Revilo: Arrays auslesen

Hallo Leute :o)

ich bastel mir gerade so ´ne Art Minidatabase zurecht, die zwar funktioniert, aber es gibt da eine Hürde, über die ich irgendwie nicht hinwegkomme. Im Archiv habe ich auch nichts dazu finden können.

Eintrag = new Array();
 Eintrag[1] = new entry("toll","2","3","4","5");
 Eintrag[2] = new entry("auch toll","2","3","4","5");
 Eintrag[3] = new entry("supertoll","2","3","4","5");

Nach diesem Schema sind die Einträge abgelegt. Wie stelle ich es aber an, daß bei einem Suchbegriff "toll" alle 3 Einträge wiedergefunden werden, und nicht nur der erste?

Kann mir da jemand auf die Sprünge helfen?

  1. gruss Revilo,

    ich bastel mir gerade so ´ne Art Minidatabase zurecht, die zwar funktioniert,
    aber es gibt da eine Hürde, über die ich irgendwie nicht hinwegkomme.
    Im Archiv habe ich auch nichts dazu finden können.

    Eintrag = new Array();
    Eintrag[1] = new entry("toll","2","3","4","5");
    Eintrag[2] = new entry("auch toll","2","3","4","5");
    Eintrag[3] = new entry("supertoll","2","3","4","5");

    Nach diesem Schema sind die Einträge abgelegt. Wie stelle ich es aber an,
    daß bei einem Suchbegriff "toll" alle 3 Einträge wiedergefunden werden,
    und nicht nur der erste?

    Kann mir da jemand auf die Sprünge helfen?

    function Entry() {
          // konstruktor-funktion einer "js-klasse" >>Entry<<;
          ...
          ...
          ...
       }
       var eintrag = new Array();
       eintrag[0] = new Entry("...","...",...);
       eintrag[1] = new Entry("toll","2","3","4","5");
       eintrag[2] = new Entry("auch toll","2","3","4","5");
       eintrag[3] = new Entry("supertoll","2","3","4","5");
       eintrag[4] = new Entry("...","...",...);
       ...
       ...
       ...

    function getMatchingCollection(expression) {
          var matchingCollection = new Array();
          var entryObject = null;
          var propertyName = "";
          for (var i=0;i<eintrag.length;i++) {
             entryObject = eintrag[i];
             for (propertyName in entryObject) {
                if (propertyName.indexOf(expression) >= 0) {
                   matchingCollection[matchingCollection.length] = entryObject;
                }
                break; // so wie es aussieht muss die for-in-schleife jeweils nur die erste objekt-eigenschaft scannen;
             }
          }
          return ((matchingCollection.length == 0) ? (null) : (matchingCollection));
       }

    getMatchingCollection("toll");

    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:)

    1. hallo again,

      ... wobei folgende suche vorzuziehen ist ...

      for (propertyName in entryObject) {
               // if (propertyName.indexOf(expression) >= 0) {
                  if (entryObject[propertyName].search(new RegExp(expression,"i")) >= 0) {
                     matchingCollection[matchingCollection.length] = entryObject; // [1]
                  }
                  break; // so wie es aussieht muss die for-in-schleife jeweils nur die erste objekt-eigenschaft scannen;
               }

      ... und in zeile [1] darauf spekuliert wird, dass
         der >>Entry<<-konstruktor diesem aufbau folgt:

      function Entry() {
            // konstruktor-funktion einer "js-klasse" >>Entry<<;
            for (var i=0;i<Entry.arguments.length;i++) {
               this["propertyName"+i] = Entry.arguments[i];
            }
         }

      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:)

      1. Moin nochmal...

        jawollja, das haut hin..... super! Vielen Dank @peterS. :-)

        Greetz