Home > 技術 > jQuery.uniqueのsortOrder関数がかっこいい!!

jQuery.uniqueのsortOrder関数がかっこいい!!

配列の中から重複した要素を除去するjQuery.uniqueがかっこいいです。
実際には、

document.documentElement.compareDocumentPosition
"sourceIndex" in document.documentElement
document.createRange

のいずれかを持つブラウザを対象としているようです。

ざっくり抜き出してみたのが以下のコード。

サンプルコード

div1とdiv2がいる前提でコードを書いてます。

sortOrder関数にはdocument.createRangeバージョンを設定しています。

解説

まず
[div#div1, div#div2, div#div1, div#div2]

という配列をUniqueSort関数に渡して、sortメソッドを呼びます。

すると
[div#div1, div#div1, div#div2, div#div2]
というふうに重複要素が隣接されます。

あとは配列の前後を比較して等値だったら、sliceで取り除いている感じです。

最終的には
[div#div1, div#div2]
と重複要素がなくなっている!!

2つの要素のownerDocument.createRange()で要素の場所を特定して、compareBoundaryPointsメソッドで比較しているようなんですが、
compareBoundaryPointsメソッドってoffsetTop、offsetLeftをもとに比較しているのかな?

以下を見てもよくわからなかった。。。
range - MDC

Rangeオブジェクトを使って並び替えるのはなんか斬新で面白かったです。

■関連リンク
jQuery.unique(array) - jQuery 日本語リファレンス
sort - MDC

Trackback:0

TrackBack URL for this entry
http://hisasann.com/cgi-bin/mt/mt-tb.cgi/1253
Listed below are links to weblogs that reference
jQuery.uniqueのsortOrder関数がかっこいい!! from HouseTect, JavaScriptな情報をあなたに

Home > 技術 > jQuery.uniqueのsortOrder関数がかっこいい!!

Tag cloud
月別アーカイブ
Powered by
Powered by
Movable Type Commercial 4.261

Page Top