A-A+

JS 去空格trim()最佳实践

2016年10月14日 前端设计 暂无评论 阅读 5 views 次

正则的反向匹配比较慢。我对其性能进行了对比。综合速度和写法上来说,个人还是偏向于第一种写法。因为速度其实相差很少很少。从代码来说第二种比较晦涩并且并字节很多,这对于一个流量很高但需要用 trim() 很少的网站来说,第一种明显比较合适.

方案如下:

  1. if(!String.prototype.trim){  
  2.     String.prototype.trim = function(){  
  3.         return this.replace(/^s+|s+$/g, '');  
  4.     }  
  5. }  

上面代码测试性能上15S,后来国外网站找到了优化方法,代码如下:

  1. function trim10 (str) {  
  2.  var whitespace = ' nrtfx0bxa0u2000u2001u2002u2003u2004u2005u2006u2007u2008u2009u200au200bu2028u2029u3000';  
  3.  for (var i = 0; i < str.length; i++) {  
  4.   if (whitespace.indexOf(str.charAt(i)) === -1) {  
  5.    str = str.substring(i);  
  6.    break;  
  7.   }  
  8.  }  
  9.  for (i = str.length - 1; i >= 0; i--) {  
  10.   if (whitespace.indexOf(str.charAt(i)) === -1) {  
  11.    str = str.substring(0, i + 1);  
  12.    break;  
  13.   }  
  14.  }  
  15.  return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';  
  16. }  

相对起来下面更好,代码如下:

  1. function trim11 (str) {  
  2.  str = str.replace(/^s+/, '');  
  3.  for (var i = str.length - 1; i >= 0; i--) {  
  4.   if (/S/.test(str.charAt(i))) {  
  5.    str = str.substring(0, i + 1);  
  6.    break;  
  7.   }  
  8.  }  
  9.  return str;  
  10. }  
标签:

给我留言