如何使用filter方法删除特定的数字?



我目前正在解决这个算法问题。我需要减少一个字符串,使任何连续重复的字母都打印一次,并连续重复它们的次数,以此类推。例如,如果输入是ABC,输出应该是ABC,但如果输入是aabccbb,输出应该是a2bc2b2。我写的算法处理重复,但如果我的输入是abc,那么它返回a1b1c1而不是abc。我想知道我是否可以使用过滤器方法返回任何不= 1的值,但我不确定如何。有什么更好的办法吗?

const tester = (message) => {
// track current string
let answer = '';
// track count of letter
let count = 0;
// loop through string
for (let i = 0; i < message.length; i++) {
// increase count
count++;
// find out if current letter and proceeding letter match
if (message[i] != message[i+1]) {
// update count and and push it to final string
answer += message[i] + count;
// reset count once proceeding letter doesn't match
count = 0;
}
}
return answer;



}
console.log(tester('abc'));

我更喜欢使用正则表达式-匹配并捕获一个字符,然后向后引用以尽可能多地匹配该字符,并替换为匹配次数:

const tester = message => message.replace(
/(.)1*/g,
(match, char) => char + (match.length > 1 ? match.length : '')
);
console.log(tester('aabccbb'));

最新更新