peterS.: die Array methode "contains"

Beitrag lesen

gruss Joachim,

Is nicht so wild:
var xyz = new Array("la","le","lu");

function is_in_array(arr,str) {
for(i in arr) {if (arr[i] == str) return true;}

------------------------------^^

ist aber auch nicht ganz richtig, denn:
(0 == "") ist true,
(false == "") ist true,
(false == 0) ist true ... usw. ;

fuer solche faelle benoetigt man den
identitaetsoperator ===, eine moegliche
array-methode "contains" saehe dann so aus:

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;
  };

jetzt koennte ma z.b. schreiben:

var arr = ["la","le","lu"];
  var x = "blubb";
  var y = "le";

alert("arr.contains("" + x + "") = " + arr.contains(x) + "\narr.contains("" + y + "") = " + arr.contains(y));

noch besser als der vergleich mit ===
innerhalb der array methode "contains"
waere eine weitere fuer javascript noch
zu schreibende methode "Object.prototype.equals",
die man dann im falle von "contains" so
implementieren wuerde:

if (this[i].equals(obj)) {
        listed = true;
        break;
      }

tschoe - peterS. - pseliger@gmx.net

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