2014-05-15 27 views
0

我想轉換節點div元素爲array然後如果有相同的陣列我想擺脫他們。我究竟在哪裏犯錯? 謝謝

jQuery的

var div = $('div').get(); 
var arr = $.makeArray(div); 
var rev = $.unique(arr); 
$(rev).appendTo('body'); 

HTML

<div>1</div> 
<div>1</div> 
<div>2</div> 
<div>3</div> 
<div>3</div> 
<div>3</div> 

DEMO

+1

'排序DOM元件的陣列中,代替,其中移除了重複。請注意,這隻適用於DOM元素的數組,而不是字符串或數字。「 - 它檢查兩個元素是否相等 –

回答

2

你的錯誤是,你假設$.unique通過其內容的元素進行比較。

而它只是從選擇中刪除完全相同的節點。

如果您使用.add()將一個選擇集與另一個選擇集連接起來,可能會發生這種情況。

UPD:我能想到的最簡單的解決方案是http://jsfiddle.net/6qe4c/2/

var div = $('div'); 

var values = []; 
div.each(function() { 
    var $i = $(this), 
     value = $i.text(); 
    if (values.indexOf(value) != -1) { 
     $i.remove(); 
     return; 
    } 

    values.push(value); 
});