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 相关文章推荐
做网页的一些技巧
Feb 01 Javascript
Javascript 模式实例 观察者模式
Oct 24 Javascript
基于JQuery的日期联动实现代码
Feb 24 Javascript
用IE重起计算机或者关机的示例代码
Mar 10 Javascript
JQuery中extend使用介绍
Mar 13 Javascript
Javascript中实现String.startsWith和endsWith方法
Jun 10 Javascript
jquery图片轮播特效代码分享
Apr 20 Javascript
基于Vue.js 2.0实现百度搜索框效果
Dec 28 Javascript
深入浅析Vue.js中 computed和methods不同机制
Mar 22 Javascript
浅谈Vue路由快照实现思路及其问题
Jun 07 Javascript
vue 项目 iOS WKWebView 加载
Apr 17 Javascript
EXTJS7实现点击拖拉选择文本
Dec 17 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 CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
利用php输出不同的心形图案
2016/04/22 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
PHP钩子与简单分发方式实例分析
2017/09/04 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
Add a Formatted Table to a Word Document
2007/06/15 Javascript
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
2013/04/26 Javascript
基于jQuery实现仿淘宝套餐选择插件
2015/03/04 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
使用Ajax生成的Excel文件并下载的实例
2016/11/21 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
Nuxt.js踩坑总结分享
2018/01/18 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
jquery实现拖拽小方块效果
2020/12/10 jQuery
Python中运行并行任务技巧
2015/02/26 Python
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
Python 修改列表中的元素方法
2018/06/26 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
如何基于Python按行合并两个txt
2020/11/03 Python
2014小学年度工作总结
2014/12/20 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
留学推荐信中文范文
2015/03/26 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
大学班干部竞选稿
2015/11/20 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers