Welkom!

Deel je kennis met anderen in deze Flashgemeenschap!
Gebruikersnaam:
Wachtwoord:
Wachtwoord opslaan?
Wachtwoord vergeten?
Array.prototype.search
5401 keer gelezen
(August 28, 2003)
Waardering: 4 keer gestemd 
 4.8 van de 5

Met deze prototype kan je binnen een Array zoeken!

De functie retourneert een nieuwe Array, met daarin de waardes die beginnen met de opgegeven parameter.


/*
search: zoek binnen een array!
geschreven door: Rits
*/

Array.prototype.search = function(index) {
 // definieer de prototype met een parameter
 nArr = this.sort();
 //maak een nieuwe Array en sorteer deze alfabetisch
 var len = nArr.length;
 // definieer de lengte van de Array
 arr = new Array();
 // maak een nieuwe Array
 for (i=0; i<len; i++) {
  // loop alle waarden van de Array na
  if (nArr[i].substr(0, index.length) == index.toLowerCase() || nArr[i].substr(0, index.length) == index.toUpperCase()) {
   // als de huidige waarde overeenkomt met de index
   arr.push(nArr[i]);
   // voeg de waarde toe aan de nieuwe Array
  }
 }
 return arr;
// retourneer de nieuwe Array
};




Versie van Tha Narie:

Array.prototype.searchString = function(value)
{
    var arr = new Array();

    // om te zoeken in het HELE woord
    for (var i in this) if (this[i].toLowerCase().indexOf(value.toLowerCase()) != -1 && typeof this[i] == "string" ) arr.push(this[i]);

    // om vanaf het begin van het woord te zoeken
    for (var i in this) if (this[i].toLowerCase().substr(0, value.length) == value.toLowerCase()) arr.push(this[i]);

    arr.sort(); // optioneel
    return arr;
};

/* usage */

a = ["narie", "NaRiE", "NARIE", "nArIe", "kanarie", "narielol"];
trace(a.searchString("narie"));


Verschillen tegenover bovenster versie:
- Sorteert pas aan het einde, dus een kleinere array, bovendien is sorteren niet echt nodig, en zou beter buiten de proto gedaan kunnen worden.
- Is NIET case-sensitive, bij bovenste versie krijg je enkel resultaten met PUUR hoofdletters of PUUR kleine letters.
- Geeft resultaten terug waar de zoekstring 'ergens' in zit (indexOf), bovenste versie geeft resultaten terug waar de string met de zoekstring begint (substr)
- for(..in..) is stukken sneller bij grote Array's dan een normale for();

Geef hier je waardering: Matig 1 2 3 4 5 Geweldig!
  Waardering:
Download ( meld je eerst aan om te kunnen downloaden! )
Uitkomst korter schrijven jan Bouwma (05 April 2005, 21:48)

Hey Narie,

Is het ook nog mogelijk om onderstaande tekst korter te schrijven:   

 aaaa = (_root.sorteertotaalscorearray.searchString("AAAA"));
    _root["standtotaal.eindnaam"+aaaa] = _root.deelnemer1.naam1;
    _root["standtotaal.eindteam"+aaaa] = _root.deelnemer1.team1;
    _root["standtotaal.eindwaarde"+aaaa] = _root.deelnemer1.totaalwaarde;
    _root["standtotaal.eindpunten"+aaaa] = _root.deelnemer1.totaal;
    aaab = (_root.sorteertotaalscorearray.searchString("AAAB"));
    _root["standtotaal.eindnaam"+aaab] = _root.deelnemer2.naam1;
    _root["standtotaal.eindteam"+aaab] = _root.deelnemer2.team1;
    _root["standtotaal.eindwaarde"+aaab] = _root.deelnemer2.totaalwaarde;
    _root["standtotaal.eindpunten"+aaab] = _root.deelnemer2.totaal;

Want in bovenstaande moet ik dit eindeloos herhalen. Zelf ben ik al wat aan het bedenken geweest, maar ik kwam er niet uit.

for (z=1; z<=200; z++) {

[“zoeker”+z] = (_root.sorteertotaalscorearray.searchString("AAAA"));

    _root["standtotaal.eindnaam"+zoekerz] = _root[“deelnemer”+z].naam1;

    _root["standtotaal.eindteam"+zoekerz] = _root[“deelnemer”+z].team1;

    _root["standtotaal.eindwaarde"+zoekerz] = _root[“deelnemer”+z].totaalwaarde;

    _root["standtotaal.eindpunten"+zoekerz] = _root[“deelnemer”+z].totaal;

Probleem is dat die zoekerz waarschijnlijk niet de waarde zal weergeven, waar die in de array is gevonden bijv.3

Daarnaast zit je nog met die AAAA en AAAB etc. Is het nog een optie op deze in een zoekarray op te nemen ?

    zoekarray = new Array();
    zoekarray[0] = "NIKS";
    zoekarray[1] = "AAAA";
    zoekarray[2] = "AAAB";  etc.

Alvast hartelijk bedankt

Groeten Jan


 

 


 


RE: Uitkomst korter schrijven Narie Kanarie (05 April 2005, 22:09)
Zulke vragen dien je op het forum te stellen, want deze hebben weinig betrekking op het item zelf meer.
index nummer van de array a aangeven. jan Bouwma (22 March 2005, 19:48)

Narie, Wat ik mij afvroeg is het ook mogelijk om bijv te zoeken op narielol en dat ie dan in jouw voorbeeld 5 teruggeeft.

Vervolgens heb je allemaal tekstvlakken waarvan je de instance naam steeds met 1 ophoogt. Zodat je bijv krijgt:_root.tekst1, _root.tekst2 etc. Dit zijn gewoon tekstvelden on stage. Is het dan mogelijk om de index 5 te koppelen aan het tekstvak bijv:  _root.tekst5=_root.inputfield1  //In _root.inputfield1 staat dan narielol.

Mijn vraag is ziet de volledige code er dan uit ?????

Alvast hartelijk bedankt

Groeten

 

 


RE: index nummer van de array a aangeven. Narie Kanarie (22 March 2005, 20:06)
Ja, maar dan kan je gewoon ipv arr.push(this[i]), return i doen.
RE: RE: index nummer van de array a aangeven. jan Bouwma (22 March 2005, 21:48)

Hey Narie,

Inderdaad nou geeft ie een getal terug, harstikke mooi, gaaf !!!!!!!! Maar het lukt me nog niet om _root.tekst5=_root.inputfield1 te krijgen. Hoe doe je dat ????

Alvast hartelijk bedankt

Groeten Jan

 


1-5 | 6-9