Javascript 对函数所做的更改,该函数接受一个序列作为参数,并返回一个项目列表,其中没有任何具有相同值的元素

Javascript 对函数所做的更改,该函数接受一个序列作为参数,并返回一个项目列表,其中没有任何具有相同值的元素,javascript,Javascript,实现函数unique_in_order,该函数以一个序列作为参数,并返回一个项目列表,其中没有任何元素彼此相邻且具有相同值,并保留元素的原始顺序。 例如: 唯一顺序('AAAABBBCCDAABBB')==['A','B','C','D','A','B'] var uniqueInOrder=函数(it){ 设n=0; 设arr=[]; 设i=0; 设m=0; 长度=it.length; 如果(长度==0){ 返回arr }否则{ 如果(n==0){ arr.push(it[0]); n+=1

实现函数unique_in_order,该函数以一个序列作为参数,并返回一个项目列表,其中没有任何元素彼此相邻且具有相同值,并保留元素的原始顺序。 例如:

唯一顺序('AAAABBBCCDAABBB')==['A','B','C','D','A','B']

var uniqueInOrder=函数(it){
设n=0;
设arr=[];
设i=0;
设m=0;
长度=it.length;
如果(长度==0){
返回arr
}否则{
如果(n==0){
arr.push(it[0]);
n+=1;
}
while(n<长度){
如果(arr[i]!=it[m+1]){
arr.push(它[m+1])
i+=1;
n+=1
}否则{
m+=1
n+=1
}
}
返回arr
}
}

log(uniqueInOrder('AAAABBBCCDAABBB'))
您需要在每次迭代时增加
m
,而不仅仅是在没有找到匹配项时。这同样适用于
n

var uniqueInOrder=函数(it){
设n=0;
设arr=[];
设i=0;
设m=0;
长度=it.length;
如果(长度==0){
返回arr
}否则{
如果(n==0){
arr.push(it[0]);
n+=1;
}
while(n<长度){
如果(arr[i]!=it[m+1]){
arr.push(它[m+1])
i+=1;
n+=1
}
m+=1
n+=1
}
返回arr
}
}
log(uniqueInOrder('AAAABBBCCDAABBB'))您可以执行以下操作:

var uniqueInOrder=函数(it){
var arr=it.split(“”)
var newArr=[]
arr.forEach((字符,idx)=>{
if(idx!==arr.length&&char!==arr[idx+1])newArr.push(char)
})
返回纽瓦尔

}
您需要在每次迭代时增加
m
,而不仅仅是在没有找到匹配项时。这同样适用于
n
。你能解释一下forEach循环吗?它是一个用于数组的es6函数,与常规for循环非常相似。(顺便说一下,您也可以使用for循环)“char”是每个索引处的数组元素,idx就是索引。