最近收集了些關(guān)于字符串?dāng)?shù)組去重,找重復(fù)數(shù)的方法,記錄于下,分享給大家:
字符串去重,
思路:
先對原來的字符串拆分為數(shù)組,然后使用數(shù)組方法sort()排序,然后拼接join(),
使用正則方法進(jìn)行判斷,替換重復(fù)數(shù):
var str = "safsdfa4353asdf";
var arr = str.split("");
var arr1 = arr.sort();
var str1 = arr1.join("");
// 以上可以改寫為:str.split("").sort().join("")
str = str1.replace(/(.).*\1/g, "$1");
console.log(str);
數(shù)組去重
思路:
主要使用了indexOf()方法查詢,代碼如下
var arr = ['abc','abcd','sss','2','d','t','2','ss','f','22','d'];
//定義一個新的數(shù)組
var s = [];
//遍歷數(shù)組
for(var i = 0;i<arr.length;i++){
if(s.indexOf(arr[i]) == -1){ //判斷在s數(shù)組中是否存在,不存在則push到s 數(shù)組中
s.push(arr[i]);
}
}
console.log(s);
另外,關(guān)于正則,還有一個查找出現(xiàn)最多次的驗(yàn)證匹配,代碼如下:
var str = "aaabdfadlfadlsldflsdf";
var arr = str.split("");
var tmp = arr.sort(); // [a,a,a,a,b,b,d,d,f,l,s,s,s];
str = tmp.join("");// 需寫引號,否則會含有","
var str2 = str.match(/(\w)\1*/g); // 正則匹配,注意貪婪匹配
str = str2.sort(function(a,b) {
return a.length< b.length;
} )
console.log(str); // ["aaaaa", "ddddd", "ffff", "llll", "ss", "b"];
出現(xiàn)最多的數(shù):str[0][0],出現(xiàn)次數(shù):str[0].length
小結(jié):
正則驗(yàn)證,當(dāng)我們對字符串做查詢驗(yàn)證替換的時候,很有用。
而關(guān)于數(shù)組,查詢是否重復(fù),或者替換重復(fù)項(xiàng)的時候,除了循環(huán),還有內(nèi)置方法,使用得當(dāng)能帶來意想不到的效果。
7-11 記錄于教室。
(完)