一、数组去重
javascript数组去重,首先介绍一种时间复杂度比较高的方法,先给这个数组排序,之后再遍历数组,当遇到重复的元素时跳过即可。这个方法耗时的地方在对数组排序。
下面介绍一种方法:
function my_unique (txt) {//text是需要去重的数组
var res = [];//res是去重后的数组
var json = [];//这是一个局部变量
for(var i = 0; i < txt.length; i++){
if(!json[txt[i]]){
res.push($.trim(txt[i]));
json[txt[i]] = true;
}
}
return res;
}
为了更容易理解这段代码,假设有这样一个数组:
>>a=[1,3,45,3,5];
我们将数组a中的元素带入my_unique,看下代码是如何执行的
首先,我们处理a[1],json[a[1]]即为json[1],因为json初始化是一个空数组,所以json[1]不存在,所以我们将其push进res中,并且,置json[1]为true,这样,下次我们再遇到a[i]==1时,就不会再将其push进res了,也就达到了去重的目的。
这种方法使用了一个辅助空间,但是用同样的思想,我们还可以它来处理对象的去重。
二、数字转成逗号分隔
在处理数据的时候,可能会遇到这种情况,我们希望将数字转为三个一组,然后用逗号分隔,这个用程序实现的话可能会有两种处理方式,可以不断操作数字,对其取模取余最终将结果串接为字符串,当然,也可以将数字转为字符串处理,三位三位的处理然后串接同样能达到结果。但是在javascript中,我们可以利用正则表达式更高效的实现它。
function formatNumber(strNum){
if (strNum.length <= 3) {
return strNum;
}
if (!/^(\+|-)?(\d+)(\.\d+)?$/.test(strNum)) {
return strNum;
}
var a = RegExp.$1, b = RegExp.$2, c = RegExp.$3;
var re = new RegExp();
re.compile("(\\d)(\\d{3})(,|$)");
while (re.test(b)) {
b = b.replace(re, "$1,$2$3");
}
return a + "" + b + "" + c;
}
三、html元素去标签
有的时候我们需要将一串html元素去标签,只看到它的内容,可以利用正则表达式实现
formatContent = function (htmlStr) {
var contentStr = htmlStr.replace(/<[^>]+>/g,"");
return contentStr;
}