Javascript 如何以不区分大小写的方式删除字符串中重复的字母,使字母只显示一次?

Javascript 如何以不区分大小写的方式删除字符串中重复的字母,使字母只显示一次?,javascript,Javascript,我需要做一个函数,删除重复的字母,无论它是大写或小写 如果我的输入字符串是FoxtAg,则预期输出将是FoxtAg。我的输出是FoxfXtAg,它只删除小写的o 我还使用了.toLowerCase(),它给出了预期的输出,但改变了大小写 let duplicateLetter = (string) => { //check if string only contains letters if (!string.match(/^[a-zA-Z]+$/gi)) { console.l

我需要做一个函数,删除重复的字母,无论它是大写或小写

如果我的输入字符串是
FoxtAg
,则预期输出将是
FoxtAg
。我的输出是
FoxfXtAg
,它只删除小写的
o

我还使用了
.toLowerCase()
,它给出了预期的输出,但改变了大小写

let duplicateLetter = (string) => {

 //check if string only contains letters
 if (!string.match(/^[a-zA-Z]+$/gi)) {
  console.log('does not match')
 }

 //check to see if it is a string
 if(typeof(string) !== 'string') {
  return 'Please return a string'
 }

  //make string lowercase (couldn't find check for case insensitive)
  string = string.toLowerCase()

 //this gets rid of spaces as duplicate characters
 string = string.split(' ').join('')

 //creates set with only unique elements
 let noDuplicates = [...new Set(string)];


 return noDuplicates.join('')

}

console.log(duplicateLetter("FoxfoXtAg"));
您可以使用和

let str=`AbraCadABraAlakAzam`
设op=/^[a-z]+$/gi.test(str)&&str
.拆分(“”)
.减少((输出,输入)=>{
if(!(out[inp.toLowerCase()]| | out[inp.toUpperCase()])){
输出[inp]=1
}
返回;
},{})

console.log(Object.keys(op.join)(“”))
您可以使用将字符串转换为数组。这使我们能够逐字重复它

要进行该迭代,最好的选项是,它用于将数组转换为单个结果(如字符串)

reduce()
中,将使用不区分大小写的正则表达式来确定我们是否已经“使用”了该字母。我们只在输出中添加新的字母

函数移除副本(str){
让结果=数组.from(str).reduce((输出,字母)=>{
让re=new RegExp(字母“i”);//创建不区分大小写的正则表达式
return re.test(output)//我们的输出是否已经包含该字母?
?输出//是-不修改输出
:output+letter//No-将其添加到输出中
}, "");
返回结果;
}

日志(移除副本(“HELLOworld”)
给定问题的输入和预期输出,您可以将输入字符串转换为
数组
.reverse()
然后
.join()
数组,使用
RegExp
/([a-z])(?=\1 |。*\1)/ig
替换为
。)
要匹配
a-z
后跟捕获字符或后跟非捕获字符的字符,然后再匹配capature字符,请再次将字符串转换为数组,
.reverse()
然后
.join()

const removeDuplicates=(str,r=a=>a.reverse().join`=>
r([…r([…str])。替换(/([a-z])(?=\1 |.*\1)/ig,)];

console.log(移除的副本(“foxtag”)“如果我的输入字符串是“FoxtAg”,预期的输出将是“FoxtAg”。我的预期输出是“FoxfXtAg”,它只删除小写的o.“……我假设第二个字符串是实际输出,这不是您想要的?否则会有两个不同的预期结果对不起,我当前函数的输出是“FoxfXtAg”,但我想要“FoxtAg”的预期输出。我希望这能澄清这个问题。