1

I've got a list of divs like so

<div data-id="001">Blah Blah Blah</div>
<div data-id="001">Blah Blah Blah</div>
<div data-id="002">Blah Blah Blah</div>
<div data-id="002">Blah Blah Blah</div>
<div data-id="002">Blah Blah Blah</div>
<div data-id="003">Blah Blah Blah</div>
<div data-id="003">Blah Blah Blah</div>
<div data-id="004">Blah Blah Blah</div>

Is it possible to scan through this list and remove any items with duplicate data so that I'll end up with something more like:

<div data-id="001">Blah Blah Blah</div>
<div data-id="002">Blah Blah Blah</div>
<div data-id="003">Blah Blah Blah</div>
<div data-id="004">Blah Blah Blah</div>
Matt Coady
  • 3,418
  • 5
  • 38
  • 63

2 Answers2

15

Sure as you enumerate all the items just keep track of any that you've already found.

var found = {};
$('[data-id]').each(function(){
    var $this = $(this);
    if(found[$this.data('id')]){
         $this.remove();   
    }
    else{
         found[$this.data('id')] = true;   
    }
});

Live example: http://jsfiddle.net/kpEtQ/

Jamiec
  • 133,658
  • 13
  • 134
  • 193
2

See: JQuery: Remove duplicate elements?

Instead of checking

 $(this).text()

check

$(this).attr('data-id')
Community
  • 1
  • 1
derrickkwa
  • 51
  • 2