好吧,我有以下类型的输入和所需的输出。我基本上想要做的是删除连续重复的字符(保持第一个字符删除接下来所有连续重复的字符)。
input = dup(["abracadabra","allottee","assessee"])
output = ["abracadabra","alote","asese"].
input = dup(["kelless","keenness"])
output = ["keles","kenes"]
这是我到目前为止所做的。
let arr1 = ["abracadabra", "allottee", "assessee"];
let arr2 = ["kelless", "keenness"];
function dup(input) {
return input.map(e => {
let tempOp = ''
for (let i = 0; i < e.length; i++) {
if (i === 0) tempOp += e[i];
else if (e[i - 1] !== e[i]) tempOp += e[i]
}
return tempOp;
})
}
console.log(dup(arr1))
console.log(dup(arr2))
我可以用for循环来做。但是还有其他更好的方法吗? 如果可以的话,我可以用正则表达式来做吗?
答案 0 :(得分:4)
您可以尝试以下正则表达式:
(.)\1+
,然后将匹配项替换为$1
。这意味着:
将多个匹配项替换为第一个捕获组的匹配项
.
(仅匹配一次任何字符)。
let arr = [
'abracadabra',
'allottee',
'assessee',
'Gooooooooooooooogle',
'Vacuum'
];
arr = arr.map(val => val.replace(/(.)\1+/g, '$1'));
console.log(arr);