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++;
}