{"id":709,"date":"2012-12-03T09:57:42","date_gmt":"2012-12-03T08:57:42","guid":{"rendered":"https:\/\/d-mueller.de\/blog\/?p=709"},"modified":"2012-12-03T09:57:42","modified_gmt":"2012-12-03T08:57:42","slug":"javascript-array-handling-inarray-loeschen-kopieren","status":"publish","type":"post","link":"https:\/\/d-mueller.de\/blog\/javascript-array-handling-inarray-loeschen-kopieren\/","title":{"rendered":"Javascript Array-Handling: inArray, l\u00f6schen, kopieren"},"content":{"rendered":"<h2>Suchen im Array<\/h2>\n<p>Sowas wie eine <a href=\"http:\/\/php.net\/manual\/de\/function.in-array.php\">in_array<\/a> Funktion gibts bekannterma\u00dfen nicht in Javascript. Man kann sich das nat\u00fcrlich nachbauen, indem man durch das ganze Array iteriert und jeden Wert vergleicht &#8211; aber eher uncool!<\/p>\n<p>Wers noch nicht wusste: <b>indexOf<\/b> klappt nicht nur mit Strings, sondern auch mit Arrays:<\/p>\n<pre data-enlighter-language=\"js\" class=\"EnlighterJSRAW\">\r\n[&quot;foo&quot;, &quot;bar&quot;, 1, 2, 3].indexOf(&quot;bar&quot;); \/\/1\r\n[&quot;foo&quot;, &quot;bar&quot;, 1, 2, 3].indexOf(&quot;foobar&quot;); \/\/-1\r\n<\/pre>\n<p>Geht leider nicht mit dem IE <= Version 6, wer den wirklich noch unterst\u00fctzen muss, kann zumindest den Array-Prototyp erweitern und sowas verwenden:\n\n\n\n<pre data-enlighter-language=\"js\" class=\"EnlighterJSRAW\">\r\nArray.prototype.contains = function(obj) {\r\n    var i = this.length;\r\n    while (i--) {\r\n        if (this[i] === obj) {\r\n            return true;\r\n        }\r\n    }\r\n    return false;\r\n}\r\n<\/pre>\n<p>Handling ist dann:<\/p>\n<pre data-enlighter-language=\"js\" class=\"EnlighterJSRAW\">\r\n[&quot;foo&quot;, &quot;bar&quot;, 1, 2, 3].contains(&quot;foobar&quot;); \/\/false\r\n[&quot;foo&quot;, &quot;bar&quot;, 1, 2, 3].contains(&quot;bar&quot;); \/\/true\r\n<\/pre>\n<p>Vorsicht dabei allerdings, weil beim Iterieren \u00fcber das array mittels <i>for\/in<\/i> &#8211; Loop der prototype mitkommt, wenn man dies nicht mittels <a href=\"http:\/\/bonsaiden.github.com\/JavaScript-Garden\/#object.hasownproperty\">hasOwnProperty<\/a> abf\u00e4ngt.<\/p>\n<h2>Selektives L\u00f6schen von Elementen des Arrays<\/h2>\n<p>Was nimmt man so klassischerweise? <i>null<\/i> setzen?<\/p>\n<pre data-enlighter-language=\"js\" class=\"EnlighterJSRAW\">\r\nvar arr = [&quot;foo&quot;, &quot;bar&quot;, 1, 2, 3];\r\narr[2] = null;\r\nconsole.log(arr); \/\/[&quot;foo&quot;, &quot;bar&quot;, null, 2, 3]\r\nconsole.log(arr.length); \/\/5\r\n<\/pre>\n<p>Tut genau das, was man erwartet: Das Array beh\u00e4lt seine L\u00e4nge, nur der Wert wird eben null gesetzt. Oft nicht das gew\u00fcnschte Ergebnis. <\/p>\n<p>Aber vielleicht tuts ja <b>delete<\/b>?<\/p>\n<pre data-enlighter-language=\"js\" class=\"EnlighterJSRAW\">\r\nvar arr = [&quot;foo&quot;, &quot;bar&quot;, 1, 2, 3];\r\ndelete arr[2];\r\nconsole.log(arr); \/\/[&quot;foo&quot;, &quot;bar&quot;, undefined, 2, 3]\r\nconsole.log(arr.length); \/\/5\r\n<\/pre>\n<p>Hm, toll &#8211; nun also <i>undefined<\/i> und nicht mehr <i>null<\/i>, sonst keine \u00c4nderung. Aber jetzt!<\/p>\n<pre data-enlighter-language=\"js\" class=\"EnlighterJSRAW\">\r\nvar arr = [&quot;foo&quot;, &quot;bar&quot;, 1, 2, 3];\r\narr.splice(2, 1);\r\nconsole.log(arr); \/\/[&quot;foo&quot;, &quot;bar&quot;, 2, 3]\r\nconsole.log(arr.length); \/\/4\r\n<\/pre>\n<p>So war das doch geplant!<\/p>\n<h2>Arrays kopieren<\/h2>\n<p>Schamlos verweise ich <a href=\"https:\/\/d-mueller.de\/blog\/javascript-arrays-kopieren\/\">auf meinen Post &#8222;Javascript: Arrays kopieren&#8220;<\/a>, wo die Thematik ganz anst\u00e4ndig dargestellt ist.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Suchen im Array Sowas wie eine in_array Funktion gibts bekannterma\u00dfen nicht in Javascript. Man kann sich das nat\u00fcrlich nachbauen, indem man durch das ganze Array iteriert und jeden Wert vergleicht &#8211; aber eher uncool! Wers noch nicht wusste: indexOf klappt &hellip; <a href=\"https:\/\/d-mueller.de\/blog\/javascript-array-handling-inarray-loeschen-kopieren\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,3],"tags":[],"class_list":["post-709","post","type-post","status-publish","format-standard","hentry","category-javascript","category-webdev"],"_links":{"self":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts\/709","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/comments?post=709"}],"version-history":[{"count":0,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts\/709\/revisions"}],"wp:attachment":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/media?parent=709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/categories?post=709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/tags?post=709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}