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

 更新时间:2011年08月20日 23:19:16   作者:  
Fastest way to build an HTML stringPosted in 'Code Snippets, JavaScript' by James on May 29th, 2009
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 次需要的时间:

2009-09-08_124126

相关文章

  • RGB颜色值转HTML十六进制(HEX)代码的JS函数

    RGB颜色值转HTML十六进制(HEX)代码的JS函数

    转到固定长度的十六进制字符串,不够则补0 javascript找出一个背景色的数值,只好自己解析
    2009-04-04
  • 微信小程序实现根据字母选择城市功能

    微信小程序实现根据字母选择城市功能

    这篇文章主要为大家详细介绍了微信小程序中根据字母选择城市的相关方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • js实现iframe跨页面调用函数的方法

    js实现iframe跨页面调用函数的方法

    这篇文章主要介绍了js实现iframe跨页面调用函数的方法,实例展示了iframe中父页面调用子页面和子页面调用父页面的实现技巧,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • 基于Bootstrap仿淘宝分页控件实现代码

    基于Bootstrap仿淘宝分页控件实现代码

    这篇文章主要介绍了基于Bootstrap仿淘宝分页控件实现代码,本文分步骤给大家介绍的非常详细,感兴趣的朋友参考下吧
    2016-11-11
  • jQuery实现手风琴特效

    jQuery实现手风琴特效

    这篇文章主要为大家详细介绍了前端js实现手风琴效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • 使用element-plus时重写样式不起作用的问题及解决方法

    使用element-plus时重写样式不起作用的问题及解决方法

    这篇文章给大家介绍使用element-plus时重写样式不起作用的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-09-09
  • 微信小程序点击左上角返回弹窗提示解决思路

    微信小程序点击左上角返回弹窗提示解决思路

    当页面表单没有提交直接返回时,要提示用户是否保存当前信息,如果已经提交就不提示了,下面小编给大家带来了微信小程序点击左上角返回弹窗提示解决思路,感兴趣的朋友一起看看吧
    2024-06-06
  • JavaScript实现twitter puddles算法实例

    JavaScript实现twitter puddles算法实例

    这篇文章主要介绍了JavaScript实现twitter puddles算法实例,本文源自twitter的一道面试题,本文使用js解开了这首题,需要的朋友可以参考下
    2014-12-12
  • 使用原生JavaScript实现文字大小自适应的代码示例

    使用原生JavaScript实现文字大小自适应的代码示例

    在现代Web开发中,文字大小自适应是一种常见的需求,尤其是在响应式设计中,通过原生JavaScript实现文字大小的动态调整,可以确保内容在不同设备和屏幕尺寸下都能保持良好的可读性和视觉效果,本文将深入探讨如何使用原生JavaScript实现文字大小自适应,需要的朋友可以参考下
    2025-02-02
  • JS定时器实现数值从0到10来回变化

    JS定时器实现数值从0到10来回变化

    最近做项目遇到一需求要求实现数值从0到10来回变化,下面小编给大家分享下实现代码,需要的朋友参考下
    2016-12-12

最新评论