乱翻乱教-使用JS输出HTML串最快的方法

无数次滴被丫头说“没更新”,最近刚答辩完,整个人像吃了蓝色小药丸一样,不想动不=。=

最近开始狂啃JS,因为上个月去淘宝UED撞墙了,因为那边的“叔叔”们,一直都强调技术,特别是JS @_@ 。然后就被派遣回来了。

飞鱼:如果你跟我有同样遭遇的话,那么,一起学JS吧 嘎嘎···

得···切如正题。
=========== 华丽的分割线 =============

这文章是james.padolsey那看得,觉得挺有启发的,于是就翻译过来给大伙看看。

使用JS输出HTML串最快的方法

作者:James Padolsey
原文地址:猛击此链接(英文强悍的可以参考原文)
当需要将一大堆数组转换成固定格式的html,以下有几种实现方法。
注意:当然你可以直接手动将数组转换成html,如果那样的话,你就很有前途了^_^

方法一,拼接法

这种写法虽说不是最慢的,但是用的人却是最多的。额,貌似我以前都这么用

var arr = ['item 1', 'item 2', 'item 3', ...],
    list = '';

for (var i = 0, l = arr.length; i < l; i++) {
    list += '<li>' + arr[i] + '</li>';
}

list = '<ul>' + list + '</ul>';

就是使用for循环将每个数组使用字符串拼接起来的意思。

以后千万不要用这种啦,又丑又慢=。=

方法二,堆栈法(我起的名,=。=)

var arr = ['item 1', 'item 2', 'item 3', ...],
    list = [];

for (var i = 0, l = arr.length; i < l; i++) {
    list[list.length] = '<li>' + arr[i] + '</li>';
}

list = '<ul>' + list.join('') + '</ul>';

稍微比拼接法快些,但还不够完美。这次的代码使用了.join 方法 比上一种稍微高级了点,但是还是有万恶的for循环

方法三,圣杯(应该是说最佳办法吧)

var arr = ['item 1', 'item 2', 'item 3', ...];

var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';


看过后面的测试结果,你就会相信我说的,这是最快的方法。当然你也可以最近去测试一下。
作者很有自信,说这方法是最快速的。因为使用了join方法并且去掉了for循环,代码相当简洁,相比我以前老用的方法一,不禁大叫:oh 屎~~

浏览器测试

有图有真相

原文我就不翻译了,我的个人水平有限,从上图可以看出,大部分浏览器在处理以上代码时,第三种方法相对最快,但是chrome浏览器优点变态,估计是他独有的js 引擎在起作用吧。果然BT。

======补充======

原文下面评论提出了些问题:说如果数组里么有东西的话就只输出UL会有问题,说要使用三元式来解决。

哟?不错哎 订阅飞鱼的RSS Feeds 回去慢慢看^_^

您可能还对这些日志感兴趣

该文章已经被摸了729次。 共有 5 条评论

  1. 1. 葉子 2009年6月3日 at 11:21

    悲剧,能不能在写的白话点

    回复

    飞鱼 Reply:

    我去买块豆腐····

    回复

    葉子 Reply:

    据说这种方法“复杂的页面加上标签库,没办法用的”,是不是啊,师傅?教我..嘎嘎

    回复

  2. 2. 葉子 2009年6月3日 at 11:25

    看你小日子混的,甜甜蜜蜜,哪还记得更新啊

    回复

  3. 3. luguo 2009年10月13日 at 16:52

    array push 居然最慢!

    回复

发表评论

评论仅支持“a、abbr、strong、em、blockquote、code”几个简单的标签

Who am I ?

飞鱼,男,浙江人士。
非专业前端设计师兼程序员。
目前在 淘宝-淘日本 工作

最新在啃

actionscript javascript

新鲜的肉

最新评论

  • Leeiio: 呃,我的目光焦点是图片….win的时候我也是用notepad++用了很长的一段时间直到遇见了vim
  • 印第安小狮: 啊~结合着官网跟博主你这边的教程一起~总算ok啦~~~~~庆贺~
  • 大猫: 可以找我要KEY
  • 大猫: http://www.jetbrains.com/
  • 葉子: Intellij IDEA 这是哪里的东西

订阅-rss-永久链接

MT
备案号:浙ICP备09020026号