javascript - 需要使用JavaScript过滤掉字符串中重复的连续字符

标签 javascript arrays string function

这是 Codewars 中的挑战之一,我应该编写一个函数,该函数将接受一个字符串并返回一个数组,其中不能有两个连续的相同元素。另外,顺序不应改变。

例如,如果我传递一个字符串 "hhhhheeeelllloooooohhheeeyyy",则该函数应返回一个 array = ["h","e","l","o", “h”,“e”,“y”]

这是我的代码。

    var uniqueInOrder=function(iterable){
  //your code here - remember iterable can be a string or an array
     var unique = [];
   for( var i = 0; i < iterable.length; i++) {
      unique.push(iterable[i]);
   } 

   for( var j = 0, k = 1; j < unique.length; j++, k = j + 1 ){
      if(unique[j] === unique[k]){
         unique.splice(k,1);
     }
    }
   return unique;
 }

所以,如果我传递一个字符串,例如 "hhhhheeeellllloooo",它不会按我的预期工作,因为 j 的值不断递增,因此我无法过滤掉所有相同的元素。

我尝试调整逻辑,这样每当 unique[j] === unique[k] 时 j 的值就会变为零,如果不是这种情况,那么事情就会继续正如他们应该做的那样。

这给我带来了无限循环。

我需要你的帮助。

最佳答案

第二个for循环失败,因为unique.length在运行期间不是恒定的。 我认为你的问题可以这样解决:

var temp = iterable[0];
unique.push(iterable[0]);
for( var i = 1; i < iterable.length; i++) {
   if(iterable[i] != temp) {
       unique.push(iterable[i]);
       temp = iterable[i];
   }
} 

希望对你有帮助!

关于javascript - 需要使用JavaScript过滤掉字符串中重复的连续字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39909048/

相关文章:

javascript - 在 JavaScript 中嵌套 if else

javascript - 强制 CSS :hover to update after a transition (opening a menu) 的解决方法

php - 将数组转换为键值对数组

字符串 Rabin-Karp 基本数字符号

java - 替换字符串中的提及

javascript - 如何格式化 JavaScript 长字符串日期

JavaScript 条件语句失败

javascript - 在数组内的数组上使用 ng-repeat

java - 替代一长串 if 语句的更好选择

javascript - 如何更改正则表达式以获得所需的正则表达式?