首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >返回javascript中字符串中的第一个非重复字符

返回javascript中字符串中的第一个非重复字符
EN

Stack Overflow用户
提问于 2014-07-17 08:29:52
回答 27查看 35.3K关注 0票数 11

所以我试着在搜索中寻找这个,但我能找到的最接近的是几种不同语言的相似答案,我想用Javascript来做。

问题是我有一个任意的字符串,我想返回第一个不重复的字符。例如:'aba‘->将返回b 'aabcbd’->将返回c。这就是我到目前为止所知道的,只是启动一个简单的for循环。

代码语言:javascript
复制
var someString = 'aabcbd';



var firstNonRepeatedCharacter = function(string) {
for(var i = 0; i < someString.length; i++){

}
};

http://jsfiddle.net/w7F87/不确定从这里到哪里去

EN

回答 27

Stack Overflow用户

回答已采纳

发布于 2014-07-17 08:38:56

您可以使用indexOf方法查找不重复的字符。如果您查找字符串中的字符,它将是第一个找到的字符,您不会在它后面找到另一个字符:

代码语言:javascript
复制
function firstNonRepeatedCharacter(string) {
  for (var i = 0; i < string.length; i++) {
    var c = string.charAt(i);
    if (string.indexOf(c) == i && string.indexOf(c, i + 1) == -1) {
      return c;
    }
  }
  return null;
}

演示:http://jsfiddle.net/Guffa/Se4dD/

票数 34
EN

Stack Overflow用户

发布于 2014-07-17 08:37:51

代码语言:javascript
复制
var firstNonRepeatedCharacter = function(string) {
  var chars = string.split('');
  for (var i = 0; i < string.length; i++) {
    if (chars.filter(function(j) { 
                        return j == string.charAt(i); 
               }).length == 1) return string.charAt(i);
  }
};

因此,我们创建一个包含所有字符的数组,通过对任何字符进行拆分。

然后,我们遍历每个字符,并过滤我们创建的数组,因此我们将得到一个只包含这些字符的数组。如果长度曾经是1,我们知道我们有一个不重复的字符。

小提琴:http://jsfiddle.net/2FpZF/

票数 3
EN

Stack Overflow用户

发布于 2014-07-17 08:46:38

两种进一步的可能性,使用ECMA5数组方法。如果不存在,将返回undefined

Javascript

代码语言:javascript
复制
function firstNonRepeatedCharacter(string) {
    return string.split('').filter(function (character, index, obj) {
        return obj.indexOf(character) === obj.lastIndexOf(character);
    }).shift();
}

console.log(firstNonRepeatedCharacter('aabcbd'));

jsFiddle

或者如果您想要更好的性能,特别是在更长的字符串上。

Javascript

代码语言:javascript
复制
function firstNonRepeatedCharacter(string) {
    var first;

    string.split('').some(function (character, index, obj) {
        if(obj.indexOf(character) === obj.lastIndexOf(character)) {
            first = character;
            return true;
        }

        return false;
    });

    return first;
}

console.log(firstNonRepeatedCharacter('aabcbd'));

jsFiddle

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24793051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档