JavaScript 字符串去重
js
// 字符去重原理:将字符转为数组,然后使用数组去重方法,最终再转为字符
// Set 方法最简单,但不支持 IE 浏览器
// 对于大数据量,Set 方法的性能通常最好
const str = 'aaabbbcccddd'
// 方案一:正则
const uniqueStr1 = str.replace(/(\w)\1+/g, '$1')
console.log('uniqueStr1: ',uniqueStr1)
// 方案二:转set -> 转数组 -> 转字符
const uniqueStr2 = [...new Set(str)].join('')
console.log('uniqueStr2: ',uniqueStr2)
// 方案三:转数组 -> filter 过滤(满足当前字符的位置 === 当前索引的值)-> 转字符
const uniqueStr3 = [...str].filter((char, index) => str.indexOf(char) === index).join('')
console.log('uniqueStr3: ',uniqueStr3)
// 方案四:转数组 -> reduce(累加的数组中如果有当前值则返回累加器什么都不做,如果没有则把当前值拼在累加器之后)
const uniqueStr4 = [...str].reduce((acc, curr) => {
return acc.includes(curr) ? acc : acc + curr;
}, '');
console.log('uniqueStr4: ',uniqueStr4);
// 方案五:创建新字符变量 -> for 遍历原字符(新字符中不包含 遍历项则累加,包含则什么都不做)
let uniqueStr5 = ''
for (let i = 0; i < str.length; i++) {
if (uniqueStr5.indexOf(str[i]) === -1) {
uniqueStr5 += str[i];
}
}
console.log('uniqueStr5: ',uniqueStr5);