JavaScript练习:求一个字符串长度的方案对比

还记得之前讲过的第十三课内容:基本包装类型里面的charCodeAt(n)这个字符串的方法吗?这个就是本节练习的主角了。

charCodeAt(n):以Unicode编码返回指定位置索引。由于中文字符Unicode编码大于255,故而能够得出一个字符串的实际长度。

第一种:使用原型方法:

String.prototype.getStrLen = function(){
	//var time1 = new Date;
	var _this = this;
	if(!_this || _this.length == 0) return null;
	//if(!arguments.length|| !_this ) return null;
	if(" " == _this) return 0;
	var l = 0;
	for(var i = 0; i<_this.length; i++){
		if(_this.charCodeAt(i)>255) l+=2;
		else l++;
	}
	//console.log("耗时:" + (new Date - time1) + " 毫秒");
	return l;
}
console.log(str.getStrLen());

第二种:使用函数计算字符串方法一

function strLen(str){
	var time1 = new Date;
	if(str.length ==0 || !str) return null;
	var l = 0;
	for(var i = 0; i<str.length; i++){
		if(str.charCodeAt(i) >255) l+=2;
		else l++;
	}
	console.log("耗时:" + (new Date - time1) + " 毫秒");
	return l;
}
console.log(strLen(str));

第三种:使用函数计算字符串方法二(跟上一种有所不同)

function strLength(str){
	var time1 = new Date;
	if(str.length == 0 || !str) return null;
	var l = str.length;
	for(var i = 0; i< str.length; i++){
		if(str.charCodeAt(i) > 255) l++;
	}
	console.log("耗时:" + (new Date - time1) + " 毫秒");
	return l;

}
console.log(strLength(str));

结果:原本以为使用原型方法会比较快,事实证明这只是我的一厢情愿而已,原型方法计算出来的结果是他们的后面两个的4倍左右。

而使用函数的方法中,第三种是最快的。

查看比较结果(用谷歌开发工具打开)


关注我

我的微信公众号:前端开发博客,在后台回复以下关键字可以获取资源。

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF
  • 回复「Vue脑图」获取 Vue 相关脑图
  • 回复「思维图」获取 JavaScript 相关思维图
  • 回复「简历」获取简历制作建议
  • 回复「简历模板」获取精选的简历模板
  • 回复「加群」进入500人前端精英群
  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。
  • 回复「知识点」下载高清JavaScript知识点图谱

每日分享有用的前端开发知识,加我微信:caibaojian89 交流