Doppelte Array-Einträge mit jQuery.unique ausfiltern
Problem
Sie haben zwei jQuery-DOM-Collections, aus denen die doppelten Einträge entfernt werden sollen:
(function($) { $(document).ready(function() { var animals = $('li.animals').get(); var horses = $('li.horses').get(); $('#animals') .append( $(animals).clone() ) .append( $(horses).clone() ); }); })(jQuery);
Lösung
(function($) { $(document).ready(function() { var animals = $('li.animals').get(); var horses = $('li.horses').get(); var tmp = $.merge( animals, horses ); tmp = $.unique( tmp ); $('#animals').append( $(tmp).clone() ); }); })(jQuery);
Diskussion
Die jQuery-Funktion $.unique()
entfernt doppelte DOM-Elemente aus einem Array oder
einer Collection. Im Rezept haben wir die Arrays animals
und horses
per $.merge()
kombiniert. jQuery nutzt
$.unique()
in vielen Core- und
internen Funktionen, wie zum Beispiel .find()
und .add()
.
Daher wird man selbst diese Methode vor allem dann nutzen, wenn man
mit Arrays arbeitet, deren Elemente nicht per jQuery erzeugt
wurden.