数组去重 / 字符串去除重复字母
1、数组去重去空(非对象数组)
let userList = []; userList = Array.from( new Set([ appDetailMessage.value.creator, appDetailMessage.value.updater, ]), ).filter((item) => item);
2. 数组去重
基本思路 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 );
3. 字符串去除重复字母
原理和数组去重相同,只是字符串不能使用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);
浙公网安备 33010602011771号