別にulじゃなくてolでもいいんですが、「もっと簡単にリストを生成したい」とか思ってしまったんで、書いてみた。
まず最初に書いたのがこれ。
Code
$.toList1 = function(arr, callback){ return '<ul><li>' + $.map(arr, function(x, i){ return callback.call(this, x, i); }).join('</li><li>') + '</li></ul>'; }実際のリストの内容は引数として渡されるcallback Functionで行う構造なので結構応用が利くはず。
内部処理は変数の宣言を必要としない「いかにもjQuery的」な感じなのだが、やっぱりjQueryに頼りすぎると処理速度が不安になる。
ということで、もう一つ、
map
を使わないのも書いてみた。$.toList2 = function(arr, callback){ var lst = []; for (var i = 0, k = arr.length; i < k; i++) lst.push(callback.call(this, arr[i], i)); return '<ul><li>' + lst.join('</li><li>') + '</li></ul>'; }
Usage
ブログのフィードを取得してリストにして表示する。$.gFeed({ 'q': 'http://googleblog.blogspot.com/feeds/posts/default' }, function(feed){ $(document.body).append($.toList(feed.entries, function(entry, i){ return '<a href=\'' + entry.link + '\'>' + entry.title + '</a> '; })); });
処理時間を計測し、比較してみる
書いたら実際に処理にかかる時間を比較しなければ、ということで上記のブログのフィードを取得してリストにして表示する処理を10000 x 100回行い処理速度を比較してみた。console.time("test"); for (var i = 0, k = 10000; i < k; i++){ // something... } console.timeEnd("test");
10000 x 100 avg.:Result
相対的な比較ということを念のため。
約1.5倍ですか、結構差があるものですね。
0 Comments:
コメントを投稿