###質問
HTML要素をjQueryで並び替えるために、sort()が利用できるようなのですが、この関数は、JavaScriptのsort()と同等で不安定なソートなのでしょうか?というか・・・そもそもJavaScriptのArrayのSort()そのものなのでしょうか?
###実現したいこと
ソートしたい要素は2つのパラメータ(カテゴリ、id)を持っており、idでソートしたあと、カテゴリ毎にまとめるために、カテゴリーでソートしようとしています。
HTML
1<div id="wrapper"> 2 <div id="10" data-category="A">A10</div> 3 <div id="6" data-category="B">B6</div> 4 <div id="1" data-category="B">B1</div> 5 <div id="7" data-category="A">A7</div> 6 <div id="3" data-category="C">C3</div> 7 <div id="11" data-category="D">D11</div> 8 <div id="8" data-category="C">C8</div> 9 <div id="4" data-category="D">D4</div> 10 <div id="9" data-category="A">A9</div> 11 <div id="2" data-category="B">B2</div> 12 <div id="5" data-category="A">A5</div> 13</div>
javascript
1var wrapper = $('#wrapper'); 2 3var element = wrapper.children().sort(function(a,b){ 4 var a_val = $(a).id; 5 var b_val = $(b).id; 6 7 return a_val - b_val; 8}); 9 10element = element.sort(function(a,b){ 11 var a_val = $(a).data('category'); 12 var b_val = $(b).data('category'); 13 if a_val === b_val return 0; 14 if a_val < b_val { 15 return -1 16 } else { 17 return 1 18 } 19}); 20 21wrapper.append(element);
安定ソートであれば、上記のような処理で問題ないと思うのですが・・・
もし、Arrayのソートそのものであれば、Array.prototypeのsortを安定なソートになるよう書き換えれば良いのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/13 09:08
2017/01/13 11:03