Hier im Forum bekommt ihr bei euren fragen schnelle hilfe.Hier geht es rund um das Web SeitenProgrammieren.Alles rund ums Javascript,Html,Php,Css und Sql.Auf fast allen Fragen haben wir eine Antwort.
Der Soforthilfe-chat verspricht das ,was sein Name sagt. Hier sind Leute Online die sofort ihre hilfe anbieten.Seht in der OnlineListe nach und wenn einer Online ist werdet ihr auch antwort bekommen. Admine ,Moderatoren und Helfer sind unsere Spezialisten in Sachen Web Programierung
71 Unwetterwarnungen in Deutschland
Die Datenbank wurde zuletzt am 02.08.2020 17:34:28 aktualiesiert
71

Javascript Array-Handling: inArray, löschen, kopieren

Suchen im Array

Sowas wie eine in_array Funktion gibts bekanntermaßen nicht in Javascript. Man kann sich das natürlich nachbauen, indem man durch das ganze Array iteriert und jeden Wert vergleicht – aber eher uncool!

Wers noch nicht wusste: indexOf klappt nicht nur mit Strings, sondern auch mit Arrays:

["foo", "bar", 1, 2, 3].indexOf("bar"); //1 ["foo", "bar", 1, 2, 3].indexOf("foobar"); //-1 

Geht leider nicht mit dem IE <= Version 6, wer den wirklich noch unterstützen muss, kann zumindest den Array-Prototyp erweitern und sowas verwenden:

Array.prototype.contains = function(obj) {     var i = this.length;     while (i--) {         if (this[i] === obj) {             return true;         }     }     return false; } 
Handling ist dann:
["foo", "bar", 1, 2, 3].contains("foobar"); //false ["foo", "bar", 1, 2, 3].contains("bar"); //true 
Vorsicht dabei allerdings, weil beim Iterieren über das array mittels for/in – Loop der prototype mitkommt, wenn man dies nicht mittels hasOwnProperty abfängt.

Selektives Löschen von Elementen des Arrays

Was nimmt man so klassischerweise? null setzen?

var arr = ["foo", "bar", 1, 2, 3]; arr[2] = null; console.log(arr); //["foo", "bar", null, 2, 3] console.log(arr.length); //5 

Tut genau das, was man erwartet: Das Array behält seine Länge, nur der Wert wird eben null gesetzt. Oft nicht das gewünschte Ergebnis.

Aber vielleicht tuts ja delete?

var arr = ["foo", "bar", 1, 2, 3]; delete arr[2]; console.log(arr); //["foo", "bar", undefined, 2, 3] console.log(arr.length); //5 

Hm, toll – nun also undefined und nicht mehr null, sonst keine Änderung. Aber jetzt!

var arr = ["foo", "bar", 1, 2, 3]; arr.splice(2, 1); console.log(arr); //["foo", "bar", 2, 3] console.log(arr.length); //4 

So war das doch geplant!

Arrays kopieren

Schamlos verweise ich auf meinen Post „Javascript: Arrays kopieren“, wo die Thematik ganz anständig dargestellt ist.