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 相关文章推荐
在IE中调用javascript打开Excel的代码(downmoon原作)
Apr 02 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
Sep 02 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
May 24 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
Nov 10 Javascript
Vue DevTools调试工具的使用
Dec 05 Javascript
vue实现点击展开点击收起效果
Apr 27 Javascript
vue 实现数字滚动增加效果的实例代码
Jul 06 Javascript
vue.js的状态管理vuex中store的使用详解
Nov 08 Javascript
JS代码检查工具ESLint介绍与使用方法
Feb 04 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
Jul 22 Javascript
js实现碰撞检测
Jan 29 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+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
header跳转和include包含问题详解
2012/09/08 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
JS判定是否原生方法
2013/07/22 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
javascript实现Email邮件显示与删除功能
2015/11/21 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
JS正则表达式之非捕获分组用法实例分析
2016/12/28 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
Vue核心概念Action的总结
2019/01/18 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
python将html转成PDF的实现代码(包含中文)
2013/03/04 Python
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
python实现小球弹跳效果
2019/05/10 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
2020/02/25 Python
使用gunicorn部署django项目的问题
2020/12/30 Python
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
如何实现jdbc性能优化
2012/07/30 面试题
写求职信有哪些注意事项
2014/05/08 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
三严三实心得体会范文
2014/10/13 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书