peterS.: String in Array finden

Beitrag lesen

gruss Manuel, hi Tom

was hältst Du denn von assoziativen Arrays?
http://de.selfhtml.org/javascript/objekte/array.htm#assoziative_arrays

Da kannst Du dann gleich nachfragen, ob das Element unter diesem Namen angeleget ist
und die Suche in der Variablen-Definitionsliste wird von JavaScript selbst vorgenommen.

Liebe Grüße aus http://www.braunschweig.de

Tom

wenn iteration vermieden werden soll, ist dieser
   ansatz der einzig moegliche, gleichzeitig moechte
   ich aber einige langlebige missverstaendnisse aus
   dem weg raeumen:

"in javascript gibt es keine 'assoziativen arrays'!"

"jedes dennoch im javascript-kontext auftauchende
    'assoziative array' wurde brutal vergewaltigt!"

_das_ist_so_ : warum ist das so?

konstrukte der art ...

var assocArr = new Arr();
   assocArr["keyName01"] = "something";
   assocArr["keyName02"] = "something else";
   ...
        missbrauchen den Array-konstruktor, da hier
   offensichtlich "nur" ein einfaches objekt mit ein
   paar eigenschaften erzeugt werden soll - weder die
   eigenschaft "length" noch die array-methoden, ueber
   die ein array-objekt verfuegen kann, werden von einer
   solchen chimaere jemals benoetigt - deswegen bitte so:

var simpleObj = new Object();
   simpleObj.propName01 = "something";
   simpleObj.propName02 = "something else";

oder aber zur dynamischen erzeugung von objekt-eigenschaften
   bzw. fuer ehemalige "assoziative straftaeter":

var simpleObj = {}; // {} literal fuer new Object();
   simpleObj["propName01"] = "something";
   simpleObj["propName02"] = "something else";

oder aber kuerzer als objekt-literal:

var simpleObj = {
     propName01: "something",
     propName02: "something else"
   };

bzw.:

var simpleObj = {
     "propName01": "something",
     "propName02": "something else"
   };

wobei die vorvorletzte und die zuletzt aufgezeigte variante
   jeweils die moeglichkeit bieten, namen fuer objekteigenschaften
   zu verwenden, welche die namenskonvention fuer variablen verletzen
   wuerden (leerzeichen, sonderzeichen etc.);

ende teil 1:

---------

teil 2:

Bin gerade dabei, mich darin einzulesen. Allerdings befinden sich in meinem einige Zahlen
zwischen 1 und 64 und läuft eine Schleife (x=1;x<=64;x++) durch, die prüft, ob der Laufindex
x im Array enthalten ist.
Ob dann die Namensgebung für die Arrayfelder sinnvoll ist, weiß ich noch nicht, weil so auch
das anlegen des Array aufwendiger wird.

Gruss,manu

@manu:

nachdem Du teil 1 gelesen hast, sollte dir
   folgendes kommentierte beispiel weiterhelfen:

var testStr = "something special";
   var testArr = [
     1234,
     "hi",
     9876,
     "04",
     testStr
   ];
   var keyNames = function() {
     var i, obj = {};
     for (i=0; i<testArr.length; i++) {
     //alle eintraege aus "testArr" werden
     //boolsche eigenschaften des objekts
     //"obj" mit dem wert [true];
       obj[testArr[i].toString()] = true;
     }
     return obj;
   }(); /* keyNames ist jetzt ein objekt
   welches zur schnellpruefung auf werte
   aus dem array "testArr" herangezogen
   werden kann, ohne das fuer jeden test
   dieses array erst durchlaufen werden
   muss; */

alert("keyNames:\n\n" + ((typeof keyNames.toSource == "function") ? (keyNames.toSource()) : (keyNames)));

function isInTestArr(str) { // schnelltest;
     return ((keyNames[str] === true) ? (true) : (false));
   }

alert("isInTestArr:\n\n1234 : " + isInTestArr(1234) +
   "\n"hi" : " + isInTestArr("hi") + "\n9876 : " +
   isInTestArr(9876) + "\n"04" : " + isInTestArr("04") +
   "\n"" + testStr + "" : " + isInTestArr(testStr) +
   "\n\n"something else" : " + isInTestArr("something else"));

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