-1

私は StackOverflow と JavaScript の初心者です。大文字と小文字の両方を考慮し、for ステートメントを使用して結果を数えて取得することを考慮して、文字列から繰り返される最初の文字を取得しようとしています。問題は、私が使用したフォームが長すぎることです 状況を分析すると、この演習では「For」ステートメントしか使用できない可能性があるという点に達しました。これを繰り返しますが、よりクリーンで削減されたコードでは完全に理解できませんこれが、この文を理解して使用し続けるための助けを求める理由です. この場合、関数内の JavaScript スクリプトと 3 つの "For" 文で結果がテストされ、かなり肯定的な結果が得られましたが、1 つの For 文だけでは作成できません (下手な英語の Google 翻訳で申し訳ありません)。

JavaScriptでHTMLで作っています

var letter = "SYAHSVCXCyXSssssssyBxAVMZsXhZV";
var contendor = [];
var calc = [];
var mycalc = 0;



letter = letter.toUpperCase()

console.log(letter)



function repeats(){
  for (var i = 0; i < letter.length; i++) {
    if (contendor.includes(letter[i]))   {
    }else{
        contendor.push(letter[i])
        calc.push(0)
    }

  }

  for (var p = 0; p < letter.length; p++) {

    for (var l = 0; l < contendor.length; l++) {
          if (letter[p] == contendor[l])  {
              calc [l]= calc [l]+1

          }

    }
  }


  for (var f = 0; f < calc.length; f++) {

    if ( calc[f] > calc[mycalc]) {
            mycalc = f

    }
  }

 }

repeats()

console.log("The most repeated letter its: " + contendor[mycalc]);

私が期待したこと: 簡潔なコードでの結果

4

4 に答える 4

1

最初の繰り返し文字が必要な場合は、それを配列にプッシュして、文字が既に存在するかどうかを確認できます

function getFirstRepeating( str ){
    chars = []
    for ( var i = 0; i < str.length; i++){
        var char = str.charAt(i);
        if ( chars.includes( char ) ){
            return char;
        } else {
            chars.push( char );
        }
    }
    return -1;
}

これは、存在する場合は最初の繰り返し文字を返すか、-1 を返します。

働く

function getFirstRepeating( str ){
  chars = []
  for ( var i = 0; i < str.length; i++){
    var char = str.charAt(i);
    if ( chars.includes( char ) ){
      return char;
        } else {
      chars.push( char );
        }
    }
  return -1;
}

console.log(getFirstRepeating("SYAHSVCXCyXSssssssyBxAVMZsXhZV"))

于 2019-05-15T04:20:59.180 に答える