Christian Seiler: PHPs array_flip() in JS nachbauen

Beitrag lesen

Hallo Jeena,

Du kannst btw. auch den Prototypen des Array-Objekts erweitern:

Array.prototype.flip = function () {  
  var flipped = new Array();  
  for(var i in this) {  
    if (i == 'flip') continue;  
    flipped[this[i]] = i;  
  }  
  return flipped;  
}

Dann kannst Du das ganze auch so schreiben:

newarray = oldarray.flip();
(sofern oldarray ein beliebiges Objekt es Typs Array ist, wenn Du lieber mit Object arbeitest, kannst Du auch Object.prototype ändern (und new Object statt new Array in die Funktion reinschreiben) - allerdings ist flip() dann für *jedes* Objekt definiert)

Die Geschichte hat nur einen Nachteil: Jedes Array enthält dann auch ein Element "flip", das auf die Funktion "flip" zeigt, d.h. in Schleifen, die alle Elemente durchgehen, musst Du das gesondert behandeln (siehe die obige Funktion selbst).

Viele Grüße,
Christian