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 相关文章推荐
Gird事件机制初级读本
Mar 10 Javascript
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
Apr 01 Javascript
jQuery插件制作之全局函数用法实例
Jun 01 Javascript
javascript动态添加删除tabs标签的方法
Jul 06 Javascript
4种JavaScript实现简单tab选项卡切换的方法
Jan 06 Javascript
jQuery 获取select选中值及清除选中状态
Dec 13 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
May 20 jQuery
浅谈通过JS拦截 pushState和replaceState事件
Jul 21 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
Mar 20 Javascript
vue-cli3+typescript初体验小结
Feb 28 Javascript
Javascript之高级数组API的使用实例
Mar 08 Javascript
JS开发前端团队展示控制器来为成员引流
Aug 14 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
同一空间绑定多个域名而实现访问不同页面的PHP代码
2006/12/06 PHP
基于empty函数的输出详解
2013/06/17 PHP
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
PHP中使用GD库创建圆形饼图的例子
2014/11/19 PHP
PHP中header用法小结
2016/05/23 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
关于JavaScript定义类和对象的几种方式
2010/11/09 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
详解Python中最难理解的点-装饰器
2017/04/03 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
Django 大文件下载实现过程解析
2019/08/01 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
python中利用matplotlib读取灰度图的例子
2019/12/07 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
2019/12/19 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
护士自我鉴定范文
2013/10/06 职场文书
给幼儿园老师的表扬信
2014/01/19 职场文书
酒店优秀员工事迹材料
2014/06/02 职场文书
2014中学教师节广播稿
2014/09/10 职场文书
大学生求职信怎么写
2015/03/19 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
详解Oracle块修改跟踪功能
2021/11/07 Oracle
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python
python开发制作好看的时钟效果
2022/05/02 Python
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android
Nginx报404错误的详细解决方法
2022/07/23 Servers