戻り値
- Array
- arrayから重複をなくしたの新しいArray
DOM 要素を持つ配列から重複しているDOM要素を削除する。
サンプル
実行結果
There are 6 divs in this document.
no class
class dup
class dup
class dup
no class
フェーズ1
フェーズ2
フェーズ3
Javascript
var i = 0;
// divの配列を取得
var divs = $('#jqTest div').get();
// 中身確認 フェーズ1に出力
var str = 'count : ' + divs.length + "<br />";
for (i=0; i<divs.length; i++) {
str += divs[i].innerText + '<br />';
}
$('.phase1').append(str);
/**
* ここで.dupを持つのDOM配列を新たにdivsに結合
* divs[2]、divs[3]、divs[4]と
* $('.dup').get()[0]、$('.dup').get()[1]、$('.dup').get()[2]は同じもの
*/
divs = divs.concat($('#jqTest .dup').get());
// 中身確認 フェーズ2に出力
i = 0;
var str = 'count : ' + divs.length + "<br />";
for (i=0; i<divs.length; i++) {
str += divs[i].innerText + '<br />';
}
$('.phase2').append(str);
// unique実行
divs_new = jQuery.unique(divs);
// 新たに作成されたdivs_newをフェーズ3に出力
// .dupをもつDOMは重複コンテンツとみなされ削除される。
// 結果フェーズ1と同じ結果になる。
i = 0;
var str = 'count : ' + divs_new.length + "<br />";
for (i=0; i<divs_new.length; i++) {
str += divs_new[i].innerText + '<br />';
}
$('.phase3').append(str);
HTML
<div id="jqTest">
<div>There are 6 divs in this document.</div>
<div>no class</div>
<div class="dup">class dup</div>
<div class="dup">class dup</div>
<div class="dup">class dup</div>
<div>no class</div>
</div>
<hr />
<div class="phase1">
<h5>フェーズ1</h5>
</div>
<hr />
<div class="phase2">
<h5>フェーズ2</h5>
</div>
<hr />
<div class="phase3">
<h5>フェーズ3</h5>
</div>
通常のArrayオブジェクトでは利用できない。あくまでDOM要素の配列が対象。
サンプル
Javascript
var arr1 = ['javascript', 'php', 'photoshop', 'jQuery', 'SQL'];
var arr2 = ['javascript', 'php', 'javascript', 'javascript', 'SQL'];
var union = arr1.concat(arr2);
var union_length = union.length;
var new_arr = jQuery.unique(union);
$('.execute2').click(function(){
$(this).parent().html('[new_arr.length]' + new_arr.length + '<br />' +
'[union.length] ' + union_length + '<br />' +
new_arr.join('&'));
});
HTML
<div class="jqTest2">
<input type="button" value="execute2" class="execute2" />
</div>
と思ったら重複がなくなってるな・・・