Martin: in_array für javascript???

hallo!
gibt es in js ein äquivqlent zu php=>in_array()?
ich möchte keine schleife bauen, sondern direkt auf ein bestimmtes array zugreifen..
danke
martin

  1. hi,

    gibt es in js ein äquivqlent zu php=>in_array()?

    nein.

    ich möchte keine schleife bauen

    musst du aber, wenn du eine vergleichbare funktionalität haben willst.

    gruss,
    wahsaga

  2. Hallo Martin,

    gibt es in js ein äquivqlent zu php=>in_array()?
    ich möchte keine schleife bauen, sondern direkt auf ein bestimmtes array zugreifen..

    Du kannst es "nachrüsten":

    Array.prototype.contains = function (elem) {
      var i;
      for (i = 0; i < this.length; i++) {
        if (this[i] == elem) {
          return true;
        }
      }

    return false;
    };

    var b = new Array (1, 2, 4);

    alert (b.contains (1));
    alert (b.contains (2));
    alert (b.contains (3));
    alert (b.contains (4));

    Viele Grüße,
    Christian

    1. gruss Christian,

      da waren wir ja fast zeitgleich mit
         aehnlichen loesungen zur stelle - aber:

      for (i = 0; i < this.length; i++) {
          if (this[i] == elem) {

      trifft es nicht ganz, da dann Deinem test folgend
           nicht nur  "b.contains(2)" sondern eben auch
           "b.contains('2')" gelten wuerde, was aber bei
           konservativer auslegung nicht zulaessig sein sollte;

      return true;
          }
        }

      besser waere "if (this[i] === elem)" -
         noch besser "if (this[i].equals(elem)",

      wobei "Object.prototype.equals = function(obj) {...};"
         noch zu schreiben waere;

      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:)
  3. gruss Martin,

    ich kenne mich mit php ueberhaupt nicht aus,
       falls Du aber so etwas wie eine methode
       "contains" suchts, kann Dir geholfen werden:

    Array.prototype.contains = function(obj) {
         var i, listed = false;
         for (i=0; i<this.length; i++) {
           if (this[i] === obj) {
             listed = true;
             break;
           }
         }
         return listed;
       };

    wobei es noch besser waere, statt "this[i] === obj"
       einen noch zu schreibenden Object-prototypen namens
       "equals" zu verwenden (z.b.: "this[i].equals(obj)");

    so long - peterS. - pseliger@gmx.net

    --
    sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)
    1. Hallo Peter,

      Array.prototype.contains = function(obj) {

      Geil, 1 Frage, 2 Leute und eine fast identische Funktion. :-)

      Viele Grüße,
      Christian

      1. gruss

        Geil, 1 Frage, 2 Leute und eine fast identische Funktion. :-)

        jo, evolution ist schon eine feine sache - hier sogar koevolution ;-)

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