Javascript 仅显示一次字符串中的唯一字符

Javascript 仅显示一次字符串中的唯一字符,javascript,string,character,unique,Javascript,String,Character,Unique,我有一个重复字母的字符串。我希望重复多次的字母只显示一次。例如,我有一个字符串aaabbccc我希望结果是abc。到目前为止,我的函数是这样工作的: 如果字母不重复,就不会显示 如果重复一次,则只显示一次(即aa显示a) 如果重复两次,则显示全部(即aaa显示aaa) 如果重复3次,则显示6(如果aaaa,则显示aaaa) 函数唯一字符(字符串){ var-unique=''; var计数=0; 对于(变量i=0;i

我有一个重复字母的字符串。我希望重复多次的字母只显示一次。例如,我有一个字符串
aaabbccc
我希望结果是
abc
。到目前为止,我的函数是这样工作的:

  • 如果字母不重复,就不会显示
  • 如果重复一次,则只显示一次(即aa显示a)
  • 如果重复两次,则显示全部(即aaa显示aaa)
  • 如果重复3次,则显示6(如果aaaa,则显示aaaa)
函数唯一字符(字符串){
var-unique='';
var计数=0;
对于(变量i=0;i
函数必须在循环中包含循环;这就是为什么的第二个
位于第一个
的内部。

根据实际问题:“如果字母不重复,则不会显示”

函数唯一字符(str)
{
var obj=新对象();
对于(变量i=0;i1)
{
倍数。按(键);
}
}
返回倍数。join(“”);
}
var str=“aaabbbccc”;
编写(唯一字符(str));

您的问题是,每次在
字符串中找到该字符时,您都会将其添加到
唯一
。实际上,您可能应该这样做(因为您指定的答案必须是嵌套的for循环):

函数唯一字符(字符串){
var str_length=string.length;
var-unique='';
对于(var i=0;i您可以将a与a一起使用:


首先将其转换为数组,然后使用答案,然后重新加入,如下所示:

var nonUnique = "ababdefegg";
var unique = nonUnique.split('').filter(function(item, i, ar){ return ar.indexOf(item) === i; }).join('');

全部在一行中:-)

用字符填充
集合
,并连接其唯一的条目:

函数makeUnique(str){
返回String.prototype.concat(…新集合(str))
}
console.log(makeUnique('abc'));/“abc”
console.log(makeUnique('abcabc'));/“abc”
使用:


如果重复字符必须显示一次,即。, 对于i/p:AAABBCCC o/p:abc

var str="aaabbbccc";
Array.prototype.map.call(str, 
  (obj,i)=>{
    if(str.indexOf(obj,i+1)==-1 ){
     return obj;
    }
  }
).join("");
//output: "abc"
如果只需要显示唯一字符(字符串轰炸算法),请尝试此操作,添加另一个“And”条件以删除多次出现的字符并仅显示唯一字符,即。, 对于i/p:aabbbkaha o/p:kh

var str="aabbbkaha";
Array.prototype.map.call(str, 
 (obj,i)=>{
   if(str.indexOf(obj,i+1)==-1 && str.lastIndexOf(obj,i-1)==-1){ // another and condition
     return obj;
   }
 }
).join("");
//output: "kh"

唯一字符串=”;
警报(“显示用户输入字符串中特定字符的编号,然后查找唯一字符的编号:”);
函数countChar(testString,lookFor){
var-charCounter=0;
编写(“查看此字符串:
”; 用于(pos=0;pos
”); 返回计数器; } 函数findNumberOfUniqueChar(testString){ var numChar=0, uniqueChar=0; 用于(pos=0;pos
我计算了以下“+findNumberOfUniqueChar(testString)+”唯一字符):”; document.write(“
”+唯一字符串)
这里是最简单的函数

  function remove(text) 
    {
      var unique= "";
      for(var i = 0; i < text.length; i++)
      {
        if(unique.indexOf(text.charAt(i)) < 0) 
        {
          unique += text.charAt(i);
        }
      }
      return unique;
    }
函数删除(文本)
{
var-unique=“”;
对于(变量i=0;i
可能为时已晚,但仍然是我对这篇文章的回答:

function extractUniqCharacters(str){
    var temp = {};
    for(var oindex=0;oindex<str.length;oindex++){
        temp[str.charAt(oindex)] = 0; //Assign any value
    }
    return Object.keys(temp).join("");
}
函数提取UniqCharacters(str){
var temp={};

对于(var oindex=0;oindex来说,一行解决方案是使用Set。
const chars=[…新的Set(s.split(“”))];
这里是实现第2部分的最简单函数

const showUniqChars = (text) => {
  let uniqChars = "";

  for (const char of text) {
    if (!uniqChars.includes(char))
      uniqChars += char;
  }
  return uniqChars;
};

基于regexp中的@le_m answer

的一种较短方法,您可以编写
'aaabbccc'。替换(/()\1+/g,“$1”)
唯一字符('abracadabra')的结果应该是什么?结果应该是abrcd@ZlatkoSoleniq:这是怎么回事?它与你的描述不符。顺便问一句,这个用例是什么(或者是家庭作业)?他没有使用C#。它是JavaScript。我的评论仍然有些有效…我没有任何东西可以方便地运行JavaScript。我也不认为我使用了任何真正依赖于语言的东西。大多数情况下,这行代码都会失败:
bool foundIt=false;
应该是
var foundIt=false;
它与var一起工作,但我有一个问题,我想问什么s(!foundIT)并且可以用不同的方式编写它只是说,如果我们没有在
unique
字符串中找到该字符,那么我们需要添加它,因为这是我们第一次遇到这个特殊字符。必须将原型放在字符串函数路径中才能使其工作。非常酷!
string.prototype.concat(…新设置(str))
能否请您简要解释一下代码以及为什么这是解决方案?
  function remove(text) 
    {
      var unique= "";
      for(var i = 0; i < text.length; i++)
      {
        if(unique.indexOf(text.charAt(i)) < 0) 
        {
          unique += text.charAt(i);
        }
      }
      return unique;
    }
function extractUniqCharacters(str){
    var temp = {};
    for(var oindex=0;oindex<str.length;oindex++){
        temp[str.charAt(oindex)] = 0; //Assign any value
    }
    return Object.keys(temp).join("");
}
const showUniqChars = (text) => {
  let uniqChars = "";

  for (const char of text) {
    if (!uniqChars.includes(char))
      uniqChars += char;
  }
  return uniqChars;
};
const countUnique = (s1, s2) => new Set(s1 + s2).size