1. 數組去重
基本思路 indexOf():
建立一個新的數組,將原始數組中的數值向新的數組中寫入。如果這個數值不存在於新的數組中就執行寫入,如果已經存在就不寫入。
// 數組中存儲重復的數值,去除重復數值之后,應該是 [1,2,3,4,5]
var arr = [1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,5,5,5,5,5]
// 建立一個空數組,來存儲原始數組中不重復的數據
var newArr = [];
// 循環遍歷,獲取原始數組arr中的所有數值
arr.forEach(function(v){
// 在新數組中,查找當前獲取的原始數組的數值
newArr.indexOf(v)
//執行結果如果是 -1,證明在新數組中,沒有這個原始數組的數據
if(newArr.indexOf(v) === -1){
// 將這個數據,寫入到新數組中
newArr.push(v)
}
})
console.log( newArr );
2. 字符串去除重復字母
原理和數組去重相同,只是字符串不能使用forEach()循環。
建立一個新的字符串,將原始字符串中的數值向新的字符串中寫入。如果這個數值不存在於新的字符串中就執行寫入,如果已經存在就不寫入。
var str = 'aaabbbbcccddddeeeeefffff';
// 建立一個新的字符串,來存儲原來字符串中不重復的數據
var newStr = '';
// 通過for...in來循環遍歷,字符串(不能用forEach)
// key存儲的是每個字母的索引下標
for(var key in str){
// str[key] 是當前循環獲取的索引下標,對應的字符串中的字母
// newStr.indexOf(str[key]) 判斷 新字符串中,是否有當前這個字母
// 如果結果是 -1 證明新字符串中沒有這個字母
if(newStr.indexOf(str[key]) === -1){
// 執行字符串拼接操作,將這個字母拼接入新的字符串中
newStr += str[key];
}
}
console.log(newStr);
-----來自千鋒逆戰班的一個小白
