需要使用JavaScript过滤掉字符串中重复的连续字符
Need to filter out repeating consecutive characters in a string using JavaScript
这是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;
}
所以,如果我传递一个字符串,比如"hhhhheeeeeellllloooo"
,它不会像我想的那样工作,因为j
的值不断增加,因此我不能过滤掉所有相同的元素。
我试着调整逻辑,这样每当unique[j] === unique[k]
的值j将变成零,如果不是这种情况,那么事情将继续他们应该做的。
这给了我一个无限循环。
我需要你的帮助
第二个for loop
失败,因为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];
}
}
希望有帮助!
您只需要将iterable的当前索引与unique:
中的最后一个字符进行比较。function(iterable){
var unique = []
for(var i=0; i< iterable.length; i++){
if(unique.length < 1){
unique.push(iterable[i])
} else if(iterable[i] !== unique[unique.length - 1]) {
unique.push(iterable[i])
}
}
return unique
}
我想这会对你有帮助:
var word="hhhhheeeelllloooooohhheeeyyy"
function doit(iterable){
var unique = []
unique[0]=iterable[0]
for(var i=1; i< iterable.length; i++){
if(iterable[i] !== unique[unique.length - 1]) {
unique.push(iterable[i])
}
}
return unique
}
alert(doit(word))
for循环不会失败,因为唯一。长度是动态的,即会随着新元素的加入而改变。
也在Internet Explorer中测试过。这里是jsfiddle的链接:https://jsfiddle.net/kannanore/z5gbee55/
var str = "hhhhheeeelllloooooohhheeeyyy";
var strLen = str.length;
var newStr = "";
for(var i=0; i < strLen; i++ ){
var chr$ = str.charAt(i);
//if(i==0) {newStr = chr$ };
if(chr$ == str.charAt(i+1)){
strLen = str.length;`enter code here`
}else{
newStr = newStr + chr$ ;
}
}
//document.write(newStr);
console.log(newStr);
//Answer: helohey
相关文章:
- 如何限制同一个字符连续使用
- 如何检测每个连续字符与前一个字符相差最小字母差的字符序列(1)
- 如何在不丢失格式的情况下连续淡入() 元素文本的每个字符,包括嵌套元素
- Javascript 密码不应包含用户的帐户名或用户全名中超过两个连续字符的部分
- Javascript 正则表达式避免连续两次使用相同的字符
- 正则表达式不允许连续使用多个特殊字符
- 识别 Javascript 字符串中的连续十六进制字符块
- 正则表达式拒绝连续字符
- 匹配集合中连续出现的多个字符
- 将文本输入限制为由非连续字符分隔的数字组
- Regex电子邮件验证-域中没有连续的连字符
- 当4个字母字符连续出现时,Regex进行过滤
- RegEx javascript匹配连续出现的2个字符,但不能更多
- Regex用于在8个字符的字符串中搜索连续的两个数字和字母
- 需要使用JavaScript过滤掉字符串中重复的连续字符
- JavaScript Regex删除特定的连续重复字符
- 用一个空白字符替换连续的空白
- 在JavaScript中验证连续字符或数字的正则表达式
- 如何找到3个或更多的连续字符
- 匹配连续-的正则表达式.或者字符串中的-(连字符和点)