字符串去重:
思路:
1.創建一個新的數組存放結果
2.創建一個空對象
3.for循環時,每次取出一個元素與對象進行對比,如果這個元素不重複,則把它存放到結果數組中,同時把這個元素的內容作爲對象的一個屬性,並賦值爲1,存入到第2步建立的對象中。
說明:至於如何對比,就是每次從原數組中取出一個元素,然後到對象中去訪問這個屬性,如果能訪問到值,則說明重複。
代碼實現:
Array.prototype.unique3 = function(){
var res = [];
var json = {};
for(var i = 0; i < this.length; i++){
if(!json[this[i]]){
res.push(this[i]);
json[this[i]] = 1;
}
}
return res;
}
var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
alert(arr.unique3()); //112,34,你好,str,str1
除去字符串中的重
function dropRepeat(str){
var result=[];
var hash={};
for(var i=0, elem; i<str.length;i++){
elem=str[i];
if(!hash[elem]){
hash[elem]=true;
result=result+elem;
}
}
return result;
}
alert(dropRepeat("ascddddaaarrfdrbcdd")); //ascdrfb;
注:思路與上述一樣,在此就不過多重複。
查找一個字符串中所有子串的位置
通過循環調用indexOf()或lastIndexOf()來找到所有匹配的子字符串。
上面兩個方法都是從一個字符串中搜索給定的子字符串,然後返回子字符串的位置(如果沒有找到子字符串,則返回-1)。這兩個方法的區別在於:indexOf()方法從字符串的開頭向後搜索子字符串,而lastIndexOf()方法是從字符串的末尾向前搜索子字符串。
這兩個方法都可以接收可選的第二個參數,表示從字符串中的那個位置開始搜索。換句話說,indexOf()會從該參數指定的位置向後搜索,忽略該位置之前的所有字符;lastIndexOf()類似。
思路:通過不斷增加indexOf()方法開始查找的位置,遍歷了一個長字符串。在循環之外,首先找到了”o”在字符串中的初始位置;而進入循環後,則每次都給indexOf()傳遞上一次的位置加1。這樣就確保了每次新搜索都從上一次找到的子字符串的後面開始。每次搜索返回的位置被保存在數組positions中,以便將來使用。
代碼實現:
var str = "I think of other ages that floated upon the stream of life and love and death";
function searchSubStr(str,subStr){
var positions = new Array(); //定義數組存放位置
var pos = str.indexOf(subStr); //返回首次位置
while(pos>-1){
positions.push(pos);
pos = str.indexOf(subStr,pos+1);
}
return positions;
}
alert(searchSubStr(str,"o")); //8,11,29,37,51,64
在給定字符串中查找子子符串,並返回相應的位置,否則返回-1
代碼實現:
function indexOf(arr, item) {
if( Array.prototype.indexOf){
return arr.indexOf(item);
}
else{
for(var i=0; i<arr.len; i++){
if(item==arr[i]){
return i;
}
}
}
return -1;
}
字符串壓縮
字符串方法
Method | 描述 |
---|---|
charAt() | 返回指定索引位置的字符 |
charCodeAt() | 返回指定索引位置字符的 Unicode 值 |
concat() | 連接兩個或多個字符串,返回連接後的字符串 |
fromCharCode() | 將字符轉換爲 Unicode 值 |
indexOf() | 返回字符串中檢索指定字符第一次出現的位置 |
lastIndexOf() | 返回字符串中檢索指定字符最後一次出現的位置 |
localeCompare() | 用本地特定的順序來比較兩個字符串 |
match() | 找到一個或多個正則表達式的匹配 |
replace() | 替換與正則表達式匹配的子串 |
search() | 檢索與正則表達式相匹配的值 |
slice() | 提取字符串的片斷,並在新的字符串中返回被提取的部分 |
split() | 把字符串分割爲子字符串數組 |
substr() | 從起始索引號提取字符串中指定數目的字符 |
substring() | 提取字符串中兩個指定的索引號之間的字符 |
toLocaleLowerCase() | 根據主機的語言環境把字符串轉換爲小寫,只有幾種語言(如土耳其語)具有地方特有的大小寫映射 |
toLocaleUpperCase() | 根據主機的語言環境把字符串轉換爲大寫,只有幾種語言(如土耳其語)具有地方特有的大小寫映射 |
toLowerCase() | 把字符串轉換爲小寫 |
toString() | 返回字符串對象值 |
toUpperCase() | 把字符串轉換爲大寫 |
trim() | 移除字符串首尾空白 |
valueOf() | 返回某個字符串對象的原始值 |