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倍左右。

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

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

原文链接:JavaScript练习:求一个字符串长度的方案对比 版权所有,转载时请注明出处,违者必究。
注明出处格式:前端开发博客 (http://caibaojian.com/js-getstrlen.html)
评论已关闭。