4

で配列を設定しますが、この配列をループして、存在するものをチェックして削除するのa[letter][occurences]に苦労しています。occurences > 1

function charFreq(s) {
    var i, j;
    var a = new Array();

    for (j = 0; j < s.length; j++) {
        for (i = 0; i < a.length; i++) {
            if (a[i][0] == s[j]) {
                a[i][1]++;
                break;
            }
        }
        if (i == a.length) {
            a[i] = [s[j], 1];
        }
    }
    return a[i][0];
}
document.write(charFreq("insert string here"));

これは私がこれまでに思いついた混乱です:

function check(str) {
    var c;
    for (c=0; c < a.length; c++) {
        if(a[c][1] == 1) {
            return true;
            break;
        } else {
            return false;
        }
    }
}
4

7 に答える 7

0

簡単な方法は次のとおりです。

str = str.split('').filter(function(v,i,self){
  return self.indexOf(v) == i;
}).join('');
于 2013-06-24T22:14:08.400 に答える
0

文字列から重複する文字を削除するには、ユーザーを @Cerbrus にした次の関数を使用できます

function find_unique_characters( string ){
    var unique='';
    for(var i=0; i<string.length; i++){
        if(string.lastIndexOf(string[i]) == string.indexOf(string[i])){
            unique += string[i];
        }
    }
    return unique;
}
console.log(find_unique_characters('baraban'));

文字列内で 1 回出現する文字のみを返したい場合は、最後に出現した文字が最初に出現した位置と同じ位置にあるかどうかを確認します。

あなたのコードは、文字列内のすべての文字を少なくとも 1 回は返していました。

stackoverflow のスレッドへのリンク文字列から重複する文字を削除 </p>

于 2013-06-24T22:13:13.743 に答える
0
function RemoveDuplicateLetters(input) {
    var result = '', i = 0, char = '';
    while (i < input.length) {
        char = input.substring(i, i+1);
        result += char;
        input = input.replace(char,'');
    }
    return result;
}
于 2013-06-24T22:18:55.917 に答える
0

これは、英字のみを想定しており、大文字と小文字は等しくありません。

function uniqueChars(string){
    var i= 0, L= string.length, ustring= '', next;
    while(i<L){
        next= string.charAt(i++);
        if(ustring.indexOf(next)== -1) ustring+= next;
    }
    return ustring.replace(/[^a-zA-Z]/g, '');
}
var s1= 'The quick red fox jumps over the lazy brown dog.';
uniqueChars(s1)

/* 戻り値: (文字列) Thequickrdfoxjmpsvtlazybwng */

これは、一意の文字を返します-

function uniqueArray(array){
    return array.filter(function(itm, i, T){
        return T.indexOf(itm)== i;
    });
}
var s1= 'The quick red fox jumps over the lazy brown dog.';
uniqueArray(s1.split('')).join('');

/* 戻り値: (文字列) quickrdfoxjmpsvtlazybwng。*/

于 2013-06-24T23:26:01.547 に答える
0

スプライスバージョンが表示されないので、ここに 1 つを示します。

function uniqueChars(s) {
  var s = s.split('');
  var c, chars = {}, i = 0;

  while ((c = s[i])) {
    c in chars? s.splice(i, 1) : chars[c] = ++i;
  }
  return s.join('');
}
于 2013-06-24T22:41:32.487 に答える