0

私は次の演習を与えられましたが、うまくいかないようです。

//Remove duplicate characters in a
// given string keeping only the first occurrences. 
// For example, if the input is ‘tree traversal’ 
// the output will be "tre avsl".
// ---------------------
var params = 'tree traversal word';

var removeDuplicates = function (string) {
  return string;
};

// This function runs the application
// ---------------------
var run = function() {
  // We execute the function returned here, 
  // passing params as arguments
  return removeDuplicates;
};

私がやったこと -

var removeDuplicates = function (string) {

  var word ='';
    for(var i=0; i < string.length; i++){
      if(string[i] == " "){  
            word += string[i] + " ";
      }
      else if(string.lastIndexOf(string[i]) == string.indexOf(string[i]))
      {
        word += string[i];
      }
    }

  return word;
};

replaceAll の使用は許可されておらず、内側の for ループを作成しても機能しません。

4

2 に答える 2

0

まず、run 関数は を返すはずremoveDuplicates(params)ですよね?

あなたは正しい方向に進んでいますが、この条件についてもう一度考える必要があります:

else if(string.lastIndexOf(string[i]) == string.indexOf(string[i]))

を例にi = 0とると、は 5 (2 番目の 't' のインデックス) を返しますが、indexOf() は 0 を返します。'tree traversal word'lastIndexOf()

「t」がまだ追加されていないため、明らかにこれはあなたが望むものではありませwordん(ただし、これは繰り返される文字であり、条件が実際にテストするものです)。

徐々に を構築しているため、 for ループの反復ごとに文字が既に存在するwordかどうかをテストすることを検討してください。そうでない場合は、追加します。string[i]word

(多分これは役に立つでしょう: http://www.w3schools.com/jsref/jsref_search.asp )

幸運を!

于 2013-08-08T19:10:21.737 に答える