JavaScript 怎样高效拼接字符串?

作者&投稿:福国 (若有异议请与网页底部的电邮联系)
JavaScript 怎样高效拼接字符串~

第一种方法 用连接符“+”把要连接的字符串连起来:str="a";str+="b";毫无疑问,这种方法是最便捷快速的,如果只连接100个以下的字符串建议用这种方法最方便。 第二种方法 以数组作为中介用 join 连接字符串:var arr=new Array();arr.push(a);arr.push(b);var str=arr.join("");w3school 网站介绍说这种方法要比第一种消耗更少的资源,速度也更快,后面我们通过实验再验证是否是这样。 第三种方法 利用对象属性来连接字符串function stringConnect(){ this._str_=new Array();}stringConnect.prototype.append=function(a){ this._str_.push(a);}stringConnect.prototype.toString=function(){ return this._str_.join();} var mystr=new stringConnect; mystr.append("a"); var str=mystr.toString();

javascript中字符串的拼接使用的是+号连接操作符,另外操作字符串的方法有

  字符串其他的调用方法:
  s.charAt(0); //第一个字符:“H”
  s.charAt(s.length-1); //最后一个字符串“d”
  s.substring(1,4); //第2~4个字符串注意不是第2~5个字符串 “ell”;
  s.slice(1,4); // 同上 “ell”;
  s.replace("H","h"); //“h”替换“H”,全文字符替换,
  s.toUpperCase(); //全文大写
  
  s.slice(-3); //最后三个字符“rld”;
  s.indexOf("l"); //字符l首次出现的位置; “2”
  s.lastIndexOf("l"); //字符l最后出现的位置; “10”
  s.indexOf("l",3); //在位置33及之后首次出现字符串了的位置 “3”
  s.split(", "); //[“hello”,“world”]分割成子串
  合理使用这些方法可以提高操作效率

就像在C#中一样,可以使用”+”来拼接字符串,而对于操作频繁、讲究效率的字符串拼接操作应该选择StringBuilder类。在JavaScript中是否也存在这个问题呢?答案是肯定的,虽然JavaScript并没有为提供一个内置的StringBuilder对象,但是可以自己来创建一个!至于效率到底能提高多少,让程序说话吧!

//---StringBuilder---
function StringBuilder(){
this.__string__ = new Array();
}
StringBuilder.prototype.append = function(str){
this.__string__.push(str);
}
StringBuilder.prototype.toString = function(){
return this.__string__.join("");
}
 
var d1 = new Date();
var buffer = new StringBuilder();
for(var i = 1; i < 10000; i++){
buffer.append("E3Card");
}
var strResult = buffer.toString();
var d2 = new Date();
 
document.write("StringBuilder用时:" + (d2.getTime() - d1.getTime()) + "<br/>");
 
//---+-----
var d3 = new Date();
var str = "";
for(var i = 1; i < 10000; i++){
str += "E3Card";
}
var d4 = new Date();
document.write("+链接用时:" + (d4.getTime() - d3.getTime()) + "<br/>");

在机器上(Core2 3.0G/4GRAM),反复F5后得到一个,比较平稳的测试结果:

StringBuilder用时:32
+链接用时:1109

哇哦,30多倍,没看错吧!

好了,赶紧自己做好一个Lib,以后都用这个StringBuilder吧:

function StringBuilder(){
this.__string__ = new Array();
}
StringBuilder.prototype.append = function(str){
this.__string__.push(str);
}
StringBuilder.prototype.toString = function(){
return this.__string__.join("");
}


(1)新版本的浏览器对拼接字符串做了优化,如果不是要兼容比较老的浏览器比如IE6,可以不做优化
(2)优化一般从两个地方着手
a.如果是for(var i=0;i<arr.length;i++),在这里面拼接,可以在循环外边用一个变量缓存一下arr.length,把i<arr.length改成i<缓存的那个变量,这样不用每次取length.
b.把要拼接的字符串都push到一个js数组里,再用数组的join方法,以空字符串join,这样就不会有过多的字符串创建和销毁,从而提高效率.

模拟JAVA的StringBuffer这种缓冲机制,其原理是利用数组进行拼接,源代码如下:

function StringBuffer() {
this.__strings__ = new Array();
}
StringBuffer.prototype.append = function (str) {
this.__strings__.push(str);
return this; //方便链式操作
}
StringBuffer.prototype.toString = function () {
return this.__strings__.join("");
}

/*测试*/
var buffer = new StringBuffer();
buffer.append("Hello ").append("javascript");
var result = buffer.toString();
alert(result);

最简单的方式就是直接用+号链接,因为js是弱类型语言,不区分具体类型,直接字符串a+b+c就行,不放心的话中间可以加上"";

百度的高质量提问就是一个脑残的设计,只能看到提问,不能看到问题详情,怎样获得高质量的回答????

另外,也看不到其它人的回答,如果其它人回答了,我再来回答一次,不是很浪费时间与精力?!

@百度知道 脑残设计!!!


JavaScript是什么? Java是什么?
JavaScript和Java HD是两种在编程领域广泛应用的语言,它们的结合为我们带来了编程世界的高清奇迹。让我们一起来探索JavaScript和Java HD的特点、应用以及它们在编程领域中的价值所在。JavaScript作为一种脚本语言,广泛应用于Web开发领域。它能够为网页添加各种交互效果,使用户界面更加生动、丰富。JavaScript具有...

JavaScript有哪些主流分类?
JavaScript的成熟分类主要包括核心JavaScript、文档对象模型(DOM)、浏览器对象模型(BOM)以及JavaScript框架与库。核心JavaScript 核心JavaScript是JavaScript语言的基础,它定义了语言的语法、类型、运算符、函数、作用域等核心概念。这部分内容不涉及任何特定环境或宿主对象,是通用且纯粹的编程语言知识。例如,...

javascriptjavascript成熟分类
JavaScript语言是一种非常成熟的编程语言,已经发展出了许多分类。下面将介绍一些关键的JavaScript分类。1. 通用目的编程语言:JavaScript是一种通用目的的编程语言,可以广泛应用于Web开发、移动应用开发、游戏开发等领域。它的灵活性和易用性使其成为众多开发者的首选语言。2. 前端开发:作为Web开发中不可或...

JavaScript是什么?
JavaScript是一种脚本语言。诞生与1995年,当时是为了处理服务端某个语言负责的某个没有填写的必填域。它是由Netscape公司布兰登.艾奇为NetscapeNavigator2开发的一种脚本语言,刚开始的时候是叫LiveScript。由于当时Java语言的盛行,LiveScript在发布前夕,临时更名为JavaScript。JavaScript是一种专为与网页交互而...

浏览器怎么开启javascript支持
浏览器开启JavaScript支持的方法如下:IE浏览器开启JavaScript方法:在IE界面菜单栏中“工具”中选择“Internet选项”–“安全”选项卡–选择“Internet”(蓝色的小地球)–“自定义级别”–找到“脚本”下的“Java小程序脚本”中进行启用。360浏览器开启JavaScript方法:在360界面菜单栏的“工具”中选择“360...

JavaScript有几种分类?
JavaScript 本身并不是以“分类”来直接区分的,但可以从不同的角度和用途来理解和使用 JavaScript。这里,我会列举几种常见的理解和使用 JavaScript 的方式或“分类”:ECMAScript(核心JavaScript):ECMAScript 是 JavaScript 的语言标准,由 ECMA 国际(前身为欧洲计算机制造商协会)制定。它定义了 ...

javascript是干什么的
JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的是一种解释性脚本语言(代码不进行预编译)主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。可...

javascript是什么意思
JavaScript是一种基于对象和事件驱动并具有安全性能的脚本语言。Javascript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。Javascript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。JavaScr...

javascript中的“ javascript:;”是什么意思?
JavaScript中的"javascript:;"是一种特殊的URL格式,用于在网站中使用JavaScript来执行特定的任务或操作。点击学习大厂名师精品课以下是一些解决方法,可以有效解决“javascript:;”带来的问题:1、使用未定义的JavaScript函数:可以将“javascript:;”替换为一个未定义的函数名称,例如“javascript:void(0);”...

javascript是啥
JavaScript是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。JavaScript在1995年由Netscape公司的...

拉孜县18572337449: 如何在 JavaScript 中高效地连接字符串 -
辉戴更年: javascript中字符串的拼接使用的是+号连接操作符,另外操作字符串的方法有字符串其他的调用方法: s.charAt(0); //第一个字符:“H” s.charAt(s.length-1); //最后一个字符串“d” s.substring(1,4); //第2~4个字符串注意不是...

拉孜县18572337449: JavaScript 怎样高效拼接字符串 -
辉戴更年: 1.对NEWS,NEWS[i]使用局部变量是高效的:var newsElem =NEWS[i].NEWS[i].LINK - > newsElem.LINK NEWS[i].TITLE - > newsElem.TITLE2.同理,对...

拉孜县18572337449: JavaScript 怎样高效拼接字符串? -
辉戴更年: (1)新版本的浏览器对拼接字符串做了优化,如果不是要兼容比较老的浏览器比如IE6,可以不做优化(2)优化一般从两个地方着手 a.如果是for(var i=0;ib.把要拼接的字符串都push到一个js数组里,再用数组的join方法,以空字符串join,这样就不会有过多的字符串创建和销毁,从而提高效率.

拉孜县18572337449: javascript如何 拼接字符串 -
辉戴更年: 1.对NEWS,NEWS[i]使用局部变量是高效的: var newsElem =NEWS[i].NEWS[i].LINK - > newsElem.LINK NEWS[i].TITLE - > newsElem.TITLE2.同理,对于NEWS.length也应该做缓存, for (var i=0, len= NEWS.length; len > i; i++) //小于符号会被知乎吃掉,反过来写的大于3.使用join代替字符串拼接这个技巧对于IE6、7有显著性能提升,同时对现代浏览器,没有太过明显的性能损耗,鉴于目前IE6、7市场占有率并不低,且它们的JS引擎执行性能低下,垃圾回策略收策略弱智,这个优化是划算的.

拉孜县18572337449: javascript 中拼接字符串,如何把一段代码拼接起来 -
辉戴更年: ahtml="<script>"+ "var rs1 = new SimpleResize(dragDiv"+obj.name+");"+ "rs1.Set(rRightDown"+obj.name+", 'right-down');"+ "rs1.Set(rLeftDown"+obj.name+", 'left-down');"+ "rs1.Set(rRightUp"+obj.name+", 'right-up');"+ "...

拉孜县18572337449: 如何制作上一页下一页的链接在做作业遇到了问题我制作了个框架为上
辉戴更年: 首先你已经可以用1 2 3 4 5 6形式链接,那么说明你在上框架显示是可以判断下框架点击的链接数字是几. 现在需要做是把上一页下一页的点击转化为数字的点击. 实现方法: 定义一个变量page,默认打开页面是1,所以page默认等于1. 点击下一页,如果page1,那么page=page-1,否则page=1 至于上框架显示原来读取数字的地方,你直接改成读page就可以. 另外你说明都是静态页面,但你完全可以利用javascript来完成以上工作(javascript无论动态还静态页面都可以是用).

拉孜县18572337449: 在java中,要输出一行字符串“1z2z3z4z.......9999z”,这样的循环字符串拼接,最高效的执行方法 -
辉戴更年: 字符串连接,性能最高的方法是使用StringBuffer类. 原因:String声明后变不可改变,原因是String引用的是地址;即新生成的字符串会被实例化出不同的地址,但在原来的字符串还被存储在内存当中.而StringBuffer类内容是可以改变的,所以...

拉孜县18572337449: 比如有一些字符串list=“aaabbbccc”在shell中怎?
辉戴更年: shell如何将aaa ?bbb ?ccc ddd 这个四个字符串生成所有组合不能有字符重复(不能... | awk -F"/" '{print NF-1}' ? 执行这条命令,就可以得到你要结果. JAVAScript中,...

拉孜县18572337449: 如何分辨HTCHD2翻新机HTCHD2有一段时间了,如何分辨翻新
辉戴更年: 鉴别是否新机: 1、先检测外观 看有没有划痕,再看原装屏幕保护贴是否紧凑;外壳... 这种机子外壳的漆是JS喷上去的,时间一长,漆就会落(机壳上的灰尘小颗粒,是喷...

拉孜县18572337449: 爱问对一天之内或者特定一段时间有提问或回答数量的限制吗
辉戴更年: 爱问对一天之内或者特定一段时间没有提问或回答数量的限制 但是大量灌水等会被处罚

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网