{"id":230604,"date":"2022-11-26T14:00:00","date_gmt":"2022-11-26T11:00:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230604"},"modified":"2022-11-09T23:10:10","modified_gmt":"2022-11-09T20:10:10","slug":"rimozione-di-elementi-duplicati-con-javascript","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/rimozione-di-elementi-duplicati-con-javascript\/","title":{"rendered":"Rimozione di elementi duplicati con JavaScript"},"content":{"rendered":"\n<p>Man mano che ES6 diventa sempre pi\u00f9 popolare nello sviluppo web, \u00e8 probabile che vedremo e scriveremo meno codice utilizzando altre librerie. Quando si tratta di WordPress, jQuery \u00e8 ancora molto comune.<\/p>\n<p>Personalmente, non penso che ci sia qualcosa di intrinsecamente sbagliato nell&#8217;usare <strong><a href=\"https:\/\/jquery.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jQuery<\/a><\/strong> (anche se <strong><a href=\"http:\/\/youmightnotneedjquery.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">potresti non averne bisogno<\/a><\/strong> ), ma penso anche che sia importante mantenere le tue abilit\u00e0 affilate e aggiornate con le nuove tecnologie.<\/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=\"Rimozione di elementi duplicati con JavaScript\" ><\/a><\/p>\n<p>Ma imparare a scrivere codice ES6 non \u00e8 lo scopo di questo post, n\u00e9 come ottenere qualcosa usando ES6.<\/p>\n<p>Invece, si tratta ancora di WordPress e jQuery. Torner\u00f2 su ES6 alla fine del post. Una delle cose che mi piacerebbe trattare, tuttavia, \u00e8 come rimuovere elementi duplicati da un elenco con una propriet\u00e0 comune.<\/p>\n<h2>Rimozione di elementi duplicati (tramite jQuery)<\/h2>\n<p>Pi\u00f9 specificamente, supponiamo di avere un elenco di elementi \u2013 forse \u00e8 un elenco ordinato, un elenco ordinato o anche solo un contenitore con un insieme di figli \u2013 e ogni figlio ha un insieme di propriet\u00e0.<\/p>\n<p>Queste propriet\u00e0 potrebbero essere attributi di classe, propriet\u00e0 dei dati personalizzate o qualcosa del genere. Ad esempio, supponiamo di avere un elenco non ordinato e ogni elemento figlio ha una propriet\u00e0 <strong>data-id<\/strong>.<\/p>\n<p>Inoltre, supponiamo che l&#8217;elenco di elementi sia costruito dalla risposta di una determinata API in cui esistono duplicati nei dati. Certo, il lato server dovrebbe gestirlo, ma nei casi in cui non viene eseguito, pu\u00f2 comunque essere eseguito sul lato client.<\/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\">Ecco il codice<\/a><\/strong> per farlo con il commento sotto di esso:<\/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>Nota quanto segue:<\/p>\n<ul>\n<li>la funzione accetta un elenco di elementi avvolto in jQuery con figli,<\/li>\n<li>i figli di un elemento <strong>data-id<\/strong> utilizzato per determinare se esistono elementi duplicati,<\/li>\n<li>impostiamo un array per determinare se abbiamo gi\u00e0 visto l&#8217;elemento,<\/li>\n<li>in caso contrario, lo aggiungiamo all&#8217;elenco; in caso contrario, lo rimuoviamo,<\/li>\n<li>infine, restituiamo l&#8217;elenco modificato e pi\u00f9 aggiornato.<\/li>\n<\/ul>\n<p>E questo \u00e8 quasi riga per riga ci\u00f2 che sta facendo il codice.<\/p>\n<p>Personalmente, cerco di non usare le istruzioni <strong>if\/else<\/strong> nel contesto di un ciclo (o anche al di fuori di un ciclo), ma ci sono momenti in cui non \u00e8 una cattiva pratica farlo, e questo \u00e8 uno di questi.<\/p>\n<h2>Allora, cos&#8217;era quello su ES6?<\/h2>\n<p>In precedenza, ho detto che ES6 \u00e8 in aumento ed \u00e8 qualcosa che noi sviluppatori dovremmo imparare. Mentre continuo a farlo, forse rivisiter\u00f2 questo post e condivider\u00f2 come ottenere la stessa funzionalit\u00e0 utilizzando ES6 anzich\u00e9 jQuery per mostrare come \u00e8 possibile farlo.<\/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=\"Rimozione di elementi duplicati con JavaScript\" ><\/a><\/p>\n<p>Indipendentemente da ci\u00f2, se stai utilizzando WordPress e hai utilizzato jQuery per gli anni con cui \u00e8 stato utilizzato, ti esorto a uscire dalla libreria e ad apprendere alcune delle nuove funzionalit\u00e0 del linguaggio.<\/p>\n<p>Personalmente, imparo facendo, e sebbene avessi una propensione iniziale a impostare jQuery per impostazione predefinita, ho optato per ES6 in un progetto su cui <strong><a href=\"https:\/\/pressware.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">stiamo<\/a><\/strong> attualmente lavorando su <strong><a href=\"https:\/\/twitter.com\/tobyschrapel\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sollecitazione di un compagno di squadra<\/a><\/strong>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Come rimuovere elementi duplicati in JavaScript usando jQuery (con una nota su 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":[731,720,844],"tags":[1168],"class_list":["post-230604","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript-6","category-sviluppatore","category-tutorial","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230604","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=230604"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230604\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/164266"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=230604"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=230604"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=230604"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}