Fastest way to build an HTML string(拼装html字符串的最快方法)


Posted in Javascript onAugust 20, 2011

Fastest way to build an HTML stringPosted in 'Code Snippets, JavaScript' by James on May 29th, 2009
原文:http://james.padolsey.com/javascript/fastest-way-to-build-an-html-string/

var arr = ['item 1', 'item 2', 'item 3', ...], 
list = ''; 
for (var i = 0, l = arr.length; i < l; i++) { 
list += '<li>' + arr + '</li>'; 
} 
list = '<ul>' + list + '</ul>';//最低效的方式。 
var arr = ['item 1', 'item 2', 'item 3', ...], list = [];for (var i = 0, l = arr.length; i < l; i++) { list[list.length] = '<li>' + arr + '</li>';}list = '<ul>' + list.join('') + '</ul>';;//比上一种的方式快。 var arr = ['item 1', 'item 2', 'item 3', ...];var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';//最优的方式。

执行1000 次:"String concat"
(ms)
"Array pushing"
(ms)
"Native join()"
(ms)
Firefox 314714865Opera 917212578IE 7500229779Chrome 2638872Safari 4b14614160Averages20555970
只有chrome比较特别,第一种方法反而是最快的。

中文翻译版本
第一种:逐个字符串相加

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

这种最常见的,但是效率最低!代码逻辑相对来说复杂。
第二种:逐个 push 进数组
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] + ''; 
} 
list = '<ul>' + list.join('') + '</ul>';

比上一种方法稍微快一些,但还是不够好…
第三种:直接join()
var arr = ['item 1', 'item 2', 'item 3', ...]; 
var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';

使用原生的方法(比如 join()),不管它后面是怎么实现的,一般都比其他方法快很多,而且代码非常简洁。

使用原生的方法(比如 join()),不管它后面是怎么实现的,一般都比其他方法快很多,而且代码非常简洁。

浏览器性能

每种方法是使用一个长度为 130 的数组来测试,其中每个元素的长度是多种多样的,防止浏览器对一定长度的字符串做特殊的优化;每种方法测试了 1000 次;下面的结果显示,执行完这 1000 次需要的时间:

Fastest way to build an HTML string(拼装html字符串的最快方法)

Javascript 相关文章推荐
jQuery中文入门指南,翻译加实例,jQuery的起点教程
Feb 09 Javascript
基于jquery DOM写的类似微博发布的效果
Oct 20 Javascript
php 中序列化和json使用介绍
Jul 08 Javascript
js识别uc浏览器的代码
Nov 06 Javascript
用NODE.JS中的流编写工具是要注意的事项
Mar 01 Javascript
web.js.字符串与正则表达式操作
May 13 Javascript
JScript实现表格的简单操作
Aug 15 Javascript
Vue仿今日头条实例详解
Feb 06 Javascript
react.js组件实现拖拽复制和可排序的示例代码
Aug 20 Javascript
vue router 组件的高级应用实例代码
Apr 08 Javascript
Vue 引入AMap高德地图的实现代码
Apr 29 Javascript
vue设置默认首页的操作
Aug 12 Javascript
jQuery最佳实践完整篇
Aug 20 #Javascript
jQuery的deferred对象使用详解
Aug 20 #Javascript
优化innerHTML操作(提高代码执行效率)
Aug 20 #Javascript
js中将URL中的参数提取出来作为对象的实现代码
Aug 16 #Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
Aug 15 #Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
Aug 15 #Javascript
理清apply(),call()的区别和关系
Aug 14 #Javascript
You might like
一个简单的MySQL数据浏览器
2006/10/09 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
php读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
提高代码性能技巧谈—以创建千行表格为例
2006/07/01 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
js 数组操作之pop,push,unshift,splice,shift
2014/01/29 Javascript
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
详解微信UnionID作用
2019/05/15 Javascript
vue el-table实现行内编辑功能
2019/12/11 Javascript
微信小程序如何获取地址
2019/12/24 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
Python 字符串中的字符倒转
2008/09/06 Python
深入理解python对json的操作总结
2017/01/05 Python
Python的iOS自动化打包实例代码
2018/11/22 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
Django配置文件代码说明
2019/12/04 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
在keras中实现查看其训练loss值
2020/06/16 Python
CSS3文本换行word-wrap解决英文文本超过固定宽度不换行
2013/10/10 HTML / CSS
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
Paul Smith英国官网:英国国宝级时装品牌
2019/03/21 全球购物
银行演讲稿范文
2014/01/03 职场文书
员工考核管理制度
2014/02/02 职场文书
2014年计生工作总结
2014/11/21 职场文书
外国人来华邀请函
2015/01/31 职场文书