我需要创建一个执行文本压缩的函数。函数接受一个参数x - text并返回由字符组成的文本并连续重复计数。
例
Ks =“太棒了”
产量
我知道该怎么做
我试过这段代码:
const randomText = 'aaavvvfdff'
function getTextCompression(x) {
const chars = x.split('')
const duplicatesCount = chars.reduce((count, char) => {
count[char] = (count[char] || 0) + 1;
return count;
}, {});
console.log(duplicatesCount)
}
getTextCompression(randomText);
获得输出:{a:3,v:3,f:3,d:1}
不知道接下来该做什么或者它是好方法吗?
那么如何编写一个返回该输出的函数呢?
你可以使用一个简单的正则表达式和一个String.prototype.replace()
来实现这个函数,这是一个run-length encoding:
function rle (str) {
return str.replace(/([^])\1*/g, (match, p) => `${p}${match.length}`)
}
let x = 'aaavvvfdff'
console.log(rle(x))
只是为了好玩,我将使用类似的方法抛出反函数:
function rld (str) {
return str.replace(/([^])(\d+)/g, (_, p1, p2) => p1.repeat(p2))
}
let x = 'a3v3f1d1f2'
console.log(rld(x))