从字符串中提取唯一字符,并在字符串之间保留空格

时间:2016-04-16 22:06:58

标签: javascript arrays string whitespace

如何在字符串中提取唯一字母匹配项,包括所有空格?

我的代码的问题是它只返回第一次出现的空格:

function unique_char(str1) {
  var str = str1;
  var uniql = "";
  for (var x = 0; x < str.length; x++) {

    if (uniql.indexOf(str.charAt(x)) == -1) {
      uniql += str[x];

    }
  }
  return uniql;
}
console.log(unique_char("the fox news newspaper"));

打印到控制台:

  

foxnwspar

但我想要的输出是:

  狐狸nw par

任何帮助将不胜感激。

由于

6 个答案:

答案 0 :(得分:2)

添加逻辑OR以检查char是否为空格

if (uniql.indexOf(char) == -1 || char == ' ') 

请参阅下面的工作代码:

function unique_char(str) {
    var uniql = "";
    for (var x = 0; x < str.length; x++) {
        var char = str.charAt(x);
        if (uniql.indexOf(char) == -1 || char == ' ') {
            uniql += str[x];
        }
    }
    return uniql;
}
document.write(unique_char("the fox news newspaper"));

答案 1 :(得分:1)

如果您尝试保留空白,请首先检查是否为' ',否则请检查它是否唯一。

&#13;
&#13;
function unique_char(str1) {
  var str = str1;
  var uniql = "";
  for (var x = 0; x < str.length; x++) {

    if (str.charAt(x) === ' '){
      uniql += str[x];
    }
    else if (uniql.indexOf(str.charAt(x)) == -1) {
      uniql += str[x];
    }
  }
  return uniql;
}
console.log(unique_char("the fox news newspaper"));
&#13;
&#13;
&#13;

打印到控制台:

  狐狸nw par

答案 2 :(得分:0)

为什么不删除空格?

function unique_char(str1) {
  var str = str1.replace(/\s+/g, '');;
  var uniql = "";
  for (var x = 0; x < str.length; x++) {

    if (uniql.indexOf(str.charAt(x)) == -1) {
      uniql += str[x];

    }
  }
  return uniql;
}
alert(unique_char("the fox news newspaper"));

答案 3 :(得分:0)

我会使用hashsets,因为它们的查找是O(1),而不是N indexOf()。 JavaScript有一个很好的对象叫Set。或者,您可以使用对象,因为它们的键本质上是唯一的。

对于真正的问题,只需跳过字符串中的空格(等于' '

function unique_char(str1) {
  var result = {};
  for (var i = 0; i < str1.length; i++) {
    if (str1[i] != ' ') result[str1[i]] = 1;
  }
  return Object.keys(result).join("");
}

console.log(unique_char("the fox news newspaper"));

答案 4 :(得分:0)

您可以使用空格字符初始化uniql并在结尾删除它

function unique_char(str1) {
   var str = str1;
   var uniql = " ";
   for (var x = 0; x < str.length; x++) {

     if (uniql.indexOf(str.charAt(x)) == -1) {
     uniql += str[x];

  }
 }
 return uniql[1:];
}
console.log(unique_char("the fox news newspaper"));

答案 5 :(得分:0)

if (uniql.indexOf(str.charAt(x)) == -1) {
  uniql += (str[x] !== ' ') ? str[x] : '';
}