我来对执行效率排个名
在我模拟我程序应用中(ie6.0)的环境,
表现最好的是 Free_Wind22 ,执行时间为 1250ms;再次感谢你的2次改进。
function dN2(num, len){
var d = 0;
return (num+'').replace(/-?0?\.0*/, "").replace(/\d/g, function(v, i, s){
return i-d > len ? '' : (s.substr(0, i).indexOf(v) >= 0 ? (d++,'') : v);
}).substr(0, len);
}
其次为dh20156,速度随变量的长度增大而变化明显。执行时间在 1550-2220之间;感谢;
var dN3 = function(num,len){
var s = num.toString().replace(/(?:^[^\d]*0*|[^\d])*/g,'').split('').reverse().join('').replace(/(\d)(?=.*\1)/g,'').split('').reverse();
s.length =len;
return s.slice(0).join('');
};
再次为s_liangchao1s,执行时间在 2900左右;感谢;
function dN1(num,len){
var nstr = "";
num.toString().replace(/-|0(?=\.)|\./g,function(){return arguments[3];}).replace(/\d/g, function(){
(nstr.indexOf(arguments[0]) == -1) && (nstr += arguments[0])
})
return nstr.substring(0,len)
}
再次为zswang ,执行时间为4500左右
function dN4(num, len){
num = num.toString().replace(/^0+|\D+/g, "");
var dict = {};
var result = 0;
for (var i = 0; len > 0 && i < num.length; i++) {
var c = num.charAt(i);
if (!dict[c]) {
result *= 10;
result += parseInt(c);
len--;
dict[c] = true;
}
}
return result.toString();
}
一个小小的优化在一个大的运算量面前,效率差别非常明显;正则表达式在ie中执行速度优势明显!
完美结贴。感谢各位的帮助,一定向你们学习,不断进步。
再次特别感谢Free_Wind22 ;
|