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);
-----来自千锋逆战班的一个小白