{"id":229863,"date":"2022-11-26T13:50:00","date_gmt":"2022-11-26T10:50:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229863"},"modified":"2022-11-09T16:43:16","modified_gmt":"2022-11-09T13:43:16","slug":"ta-bort-dubbletter-av-objekt-med-javascript","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/ta-bort-dubbletter-av-objekt-med-javascript\/","title":{"rendered":"Ta bort dubbletter av objekt med JavaScript"},"content":{"rendered":"\n<p>N\u00e4r ES6 blir mer och mer popul\u00e4rt inom webbutveckling, kommer vi sannolikt att se \u2013 och skriva \u2013 mindre kod med andra bibliotek. N\u00e4r det kommer till WordPress \u00e4r jQuery fortfarande v\u00e4ldigt vanligt.<\/p>\n<p>Personligen tycker jag inte att det \u00e4r n\u00e5got fel i sig med att anv\u00e4nda <strong><a href=\"https:\/\/jquery.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jQuery<\/a><\/strong> (\u00e4ven om <strong><a href=\"http:\/\/youmightnotneedjquery.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">du kanske inte beh\u00f6ver det<\/a><\/strong>) men jag tror ocks\u00e5 att det \u00e4r viktigt att h\u00e5lla dina kunskaper skarpa och uppdaterade med nyare teknologier.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-164265-61e762088909c.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-164265-61e762088909c.png\" alt=\"Ta bort dubbletter av objekt med JavaScript\" ><\/a><\/p>\n<p>Men att l\u00e4ra sig skriva ES6-kod \u00e4r inte syftet med det h\u00e4r inl\u00e4gget, och inte heller hur man uppn\u00e5r n\u00e5got med ES6.<\/p>\n<p>Ist\u00e4llet handlar det fortfarande om WordPress och jQuery. Jag \u00e5terkommer till ES6 i slutet av inl\u00e4gget. En av de saker jag skulle vilja t\u00e4cka \u00e4r dock hur man tar bort dubbletter fr\u00e5n en lista med en gemensam egendom.<\/p>\n<h2>Ta bort dubbletter av objekt (via jQuery)<\/h2>\n<p>Mer specifikt, l\u00e5t oss anta att du har en lista med objekt \u2013 kanske \u00e4r det en best\u00e4lld lista, en best\u00e4lld lista eller till och med bara en beh\u00e5llare med en upps\u00e4ttning underordnade \u2013 och varje barn har en upps\u00e4ttning egenskaper.<\/p>\n<p>Dessa egenskaper kan vara klassattribut, anpassade dataegenskaper eller n\u00e5got liknande. L\u00e5t oss till exempel s\u00e4ga att vi har en oordnad lista och varje underordnad objekt har en <strong>data-id-<\/strong> egenskap.<\/p>\n<p>L\u00e5t oss vidare s\u00e4ga att listan \u00f6ver objekt \u00e4r konstruerad fr\u00e5n svaret fr\u00e5n ett givet API d\u00e4r dubbletter finns i data. Visst b\u00f6r serversidan hantera detta, men i de fall det inte g\u00f6rs kan det fortfarande g\u00f6ras p\u00e5 klientsidan.<\/p>\n<p><strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/c61553ce8e662776a4d1fb7e538de55f#file-00-removing-duplicate-children-js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">H\u00e4r \u00e4r koden<\/a><\/strong> f\u00f6r att g\u00f6ra det med kommentaren under:<\/p>\n<pre><code>\/**\n * Removes duplicates from the specified array of items; however, this function\n * assumes that $items is an unordered list of items with child elements.\n *\n * @param  $items An unordered list of products with duplicaten children.\n * @return $items An unordered list of products no duplicate children.\n *\n * @private\n *\/\nvar _removeDuplicates = function($items) {\n\n  var unique = {},\n      dataItemId = -1;\n\n  $items\n    .children()\n    .each(function() {\n      dataItemId = $(this).attr('data-id');\n      if (unique[dataItemId]) {\n        $(this).remove();\n      } else {\n        unique[dataItemId] = true;\n      }\n    });\n\n  return $item;\n};<\/code><\/pre>\n<p>Observera f\u00f6ljande:<\/p>\n<ul>\n<li>funktionen accepterar en jQuery-omsluten lista \u00f6ver objekt med barn,<\/li>\n<li>barnen till ett <strong>data-id-<\/strong> element som anv\u00e4nds f\u00f6r att avg\u00f6ra om det finns dubbletter av objekt,<\/li>\n<li>vi st\u00e4ller in en array f\u00f6r att avg\u00f6ra om vi har sett objektet tidigare,<\/li>\n<li>om inte, l\u00e4gger vi till det i listan; annars tar vi bort det,<\/li>\n<li>slutligen returnerar vi den \u00e4ndrade, mer uppdaterade listan.<\/li>\n<\/ul>\n<p>Och det \u00e4r n\u00e4stan rad f\u00f6r rad vad koden g\u00f6r.<\/p>\n<p>Personligen f\u00f6rs\u00f6ker jag att inte anv\u00e4nda <strong>if\/else-<\/strong> satser inom ramen f\u00f6r en loop (eller ens utanf\u00f6r en loop), men det finns tillf\u00e4llen d\u00e5 det inte \u00e4r en d\u00e5lig praxis att g\u00f6ra det, och det h\u00e4r \u00e4r en av dem.<\/p>\n<h2>S\u00e5 vad var det med ES6?<\/h2>\n<p>Tidigare n\u00e4mnde jag att ES6 \u00e4r p\u00e5 frammarsch och det \u00e4r n\u00e5got som vi som utvecklare borde l\u00e4ra oss. N\u00e4r jag forts\u00e4tter att g\u00f6ra det kanske jag \u00e5terkommer till det h\u00e4r inl\u00e4gget och delar med mig av hur man uppn\u00e5r samma funktionalitet med ES6 snarare \u00e4n jQuery f\u00f6r att visa hur det kan g\u00f6ras.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-164265-61e7620d6d683.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-164265-61e7620d6d683.png\" alt=\"Ta bort dubbletter av objekt med JavaScript\" ><\/a><\/p>\n<p>Oavsett, om du anv\u00e4nder WordPress och har anv\u00e4nt jQuery under de \u00e5r som det har anv\u00e4nts, uppmanar jag dig att g\u00e5 utanf\u00f6r biblioteket och l\u00e4ra dig n\u00e5gra av de nyare funktionerna i spr\u00e5ket.<\/p>\n<p>Personligen l\u00e4r jag mig genom att g\u00f6ra, och \u00e4ven om jag hade en initial ben\u00e4genhet att anv\u00e4nda jQuery som standard, valde jag att g\u00e5 med ES6 i ett projekt som <strong><a href=\"https:\/\/pressware.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vi<\/a><\/strong> f\u00f6r n\u00e4rvarande arbetar med p\u00e5 <strong><a href=\"https:\/\/twitter.com\/tobyschrapel\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">uppmaning av en lagkamrat<\/a><\/strong>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hur man tar bort dubbletter i JavaScript med jQuery (med en anteckning om ES6).<\/p>\n","protected":false},"author":1,"featured_media":164266,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[848,734,724],"tags":[1173],"class_list":["post-229863","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-javascript-9","category-utvecklaren","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229863","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=229863"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229863\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/164266"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=229863"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=229863"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=229863"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}