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 相关文章推荐
js+CSS 图片等比缩小并垂直居中实现代码
Dec 01 Javascript
JavaScript库 开发规则
Jan 31 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
Feb 22 Javascript
jQuery中 delegate使用的问题
Jul 03 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
Oct 21 Javascript
bootstrap监听滚动实现头部跟随滚动
Nov 08 Javascript
在一个页面重复使用一个js函数的方法详解
Dec 26 Javascript
React学习笔记之条件渲染(一)
Jul 02 Javascript
简单实现vue验证码60秒倒计时功能
Oct 11 Javascript
mpvue小程序仿qq左滑置顶删除组件
Aug 03 Javascript
微信小程序 组件的外部样式externalClasses使用详解
Sep 06 Javascript
在antd Table中插入可编辑的单元格实例
Oct 28 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 伪造本地文件包含漏洞的代码
2011/11/03 PHP
php配置php-fpm启动参数及配置详解
2013/11/04 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
thinkPHP导出csv文件及用表格输出excel的方法
2015/12/30 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
Js 本页面传值实现代码
2009/05/17 Javascript
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
javascript时区函数介绍
2012/09/14 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
2013/10/21 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
基于Django静态资源部署404的解决方法
2019/07/28 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
python读取excel进行遍历/xlrd模块操作
2020/07/12 Python
python中复数的共轭复数知识点总结
2020/12/06 Python
美国创意之家:BulbHead
2017/07/12 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
英国名牌男装店:Standout
2021/02/17 全球购物
一套英文Java笔试题面试题
2016/04/21 面试题
如何掌握自荐信格式呢
2013/11/19 职场文书
传媒专业推荐信范文
2013/11/23 职场文书
初中数学教学反思
2014/01/16 职场文书
剪枝的学问教学反思
2014/02/07 职场文书
幼儿园运动会入场词
2014/02/10 职场文书
2014大学生全国两会学习心得体会
2014/03/13 职场文书
党建工作目标管理责任书
2015/01/29 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
诺贝尔奖获得者名言100句:句句启人心智,值永久收藏
2019/08/09 职场文书
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis