计算字符串中的重复符号并使用Javascript对它们进行分组

时间:2018-02-28 19:26:58

标签: javascript string duplicates grouping

我需要创建一个执行文本压缩的函数。函数接受一个参数 x - 文本并返回由字符组成的文本,并连续重复计数。

示例

x =“aaavvvfdff”

输出

a3v3f1d1f2

我试过这段代码:

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}

不知道接下来该做什么或者它是不是很好?

那么如何编写一个返回该输出的函数呢?

1 个答案:

答案 0 :(得分:3)

您可以使用简单的正则表达式和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))