Javascript I';I’我试图制作RLE代码,但没有成功

Javascript I';I’我试图制作RLE代码,但没有成功,javascript,Javascript,我试图实现“游程长度编码”的功能,我陷入了中间。 例如,我有一个字符串:“RRRTTTFBB”,我试图将它与这种数组分开:[“RRR”、“TTT”、“F”、“BB”] 我只设法在数组的1个键中放入了项,如下所示:[“RR”“R”“TT”“T”…] 我试着用while循环,for a循环,if/else,switch来做,但我不知道我做错了什么 function rleFunc(str) { let newArr = []; const strTrim = str.trim(); co

我试图实现“游程长度编码”的功能,我陷入了中间。 例如,我有一个字符串:
“RRRTTTFBB”
,我试图将它与这种数组分开:
[“RRR”、“TTT”、“F”、“BB”]

我只设法在数组的1个键中放入了项,如下所示:
[“RR”“R”“TT”“T”…]

我试着用while循环,for a循环,if/else,switch来做,但我不知道我做错了什么

function rleFunc(str) {
  let newArr = [];
  const strTrim = str.trim();
  const strUp = strTrim.toUpperCase();
  const arr = strUp.split("");
  const arrLength = arr.length;
  // Anyone has idea what to put here?? I'm lost
  return newArr;
}
const result=[];
让计数=1;
const input=“RRRTTTFBB”;
for(让index=1;index
const result=[];
让计数=1;
const input=“RRRTTTFBB”;
for(让index=1;index
功能组(arr){
常量组=[arr[0]]
for(arr.slice(1)的常量字符){
const last=groups.length-1
if(char==组[last][0]){
组[最后]+=char
}否则{
组。推送(字符)
}
}
返回组
}
console.log(组('RRRTTTFBB'))
功能组(arr){
常量组=[arr[0]]
for(arr.slice(1)的常量字符){
const last=groups.length-1
if(char==组[last][0]){
组[最后]+=char
}否则{
组。推送(字符)
}
}
返回组
}

console.log(group('RRRTTTFBB'))
另一种方法是使用带有
.match
的正则表达式来获得所需的结果:

const str=“RRRTTTFBB”;

console.log(str.match(/()\1*/g))
另一种方法是使用带有
.match
的正则表达式来获得所需的结果:

const str=“RRRTTTFBB”;

console.log(str.match(/()\1*/g))我建议不要将正则表达式用于琐碎的任务,除非您必须这样做。另外,如果正在计算的字符串是用户输入。这可能导致节点中的阻塞操作。请在此阅读:

arr=“rrrrtthhjhj”
常量映射=新映射;
for(arr.split(“”)的常量字符){
if(map.has(char)){
map.set(char,map.get(char)+char)
}否则{
map.set(char,char)
}
}

log([…map.values()])我建议不要将正则表达式用于琐碎的任务,除非您必须这样做。另外,如果正在计算的字符串是用户输入。这可能导致节点中的阻塞操作。请在此阅读:

arr=“rrrrtthhjhj”
常量映射=新映射;
for(arr.split(“”)的常量字符){
if(map.has(char)){
map.set(char,map.get(char)+char)
}否则{
map.set(char,char)
}
}

log([…map.values()])
你能分享你尝试的
for
loop的版本(似乎最适合这个任务)并指出错误所在吗?请记住,SO不是免费的代码编写服务。我没有要求免费编码。新阵列只是我进程的一部分我不再拥有它了,因为我删除并尝试了很多东西!您是否可以分享您尝试使用的
for
循环的版本(似乎最适合此任务)并指出错误所在?请记住,SO不是免费的代码编写服务。我没有要求免费编码。新阵列只是我进程的一部分我不再拥有它了,因为我删除并尝试了很多东西!虽然此命令可以回答问题,但提供有关此代码回答问题的原因和/或方式的附加上下文可提高其长期价值。“Try”永远不是答案,而此命令可以回答问题,提供有关此代码为什么和/或如何回答此问题的附加上下文可提高其长期价值。“尝试”永远不是答案。对否决票的任何评论都会非常有用。对否决票的任何评论都会非常有用。@Jonaswillms确实需要做一些调整。重温帮助:)@Jonaswillms确实需要一些调整。重访帮助:)
 const result = [];
 let count = 1;

 const input = "RRRTTTFBB";

 for(let index = 1; index < input.length; index++) {
    if(input[index] !== input[index - 1]) {
      result.push(input[index - 1].repeat(count));
      count = 1;
     } else count++;
 }