0

この関数を呼び出して、たとえば abc をパラメーターとして送信すると、関数は undefinedcba を返します。戻り値に「未定義」が追加される理由がわかりません。明らかな何かを見落としている可能性がありますが、それを見つけることはできません。ありがとうございました。

function FirstReverse(str) { 
    var str_arr1 = new Array();
    var ans = '';
    for(i=0; i < str.length; i++) {
        str_arr1.push(str.charAt(i));
    }
    for(j=str.length; j >= 0; j--) {
        ans += str_arr1[j];
    }
    return ans; 
}
4

5 に答える 5

9

文字列のインデックスは 0 です。 str[str.length]存在しません。

jから開始する必要がありますstr.length - 1

あるいは単にreturn str_arr1.join();

于 2012-06-01T20:45:09.050 に答える
1

文字列のインデックスは 0 から始まるため、string.length常に文字列の最後の文字のインデックスよりも 1 大きい数字になります。

2 番目の for ループでは、次を使用します。

for(var j=str.length -1; j >= 0; j--) {
于 2012-06-01T20:47:04.473 に答える
0

「abc」を渡すと、3文字しかないためです。したがって、配列str_arrにはインデックス 0、1、および 2 に要素があります。しかし、for str.lengthie を 3 回ループしてstr_arr[3]おり、定義されていません。

これを行う必要があります。

function FirstReverse(str) {  
  var str_arr1 = new Array();
  var ans = '';
  for(i=0; i < str.length; i++) {
    str_arr1.push(str.charAt(i));
  }
  for(j=str.length-1; j >= 0; j--) {
    ans += str_arr1[j];
  }
  return ans;  
}
于 2012-06-01T20:49:18.103 に答える
0

文字列を逆にしたいようです。これは、この JavaScript ワンライナーで実行できます。

function reverse(s){
    return s.split("").reverse().join("");
}

あなたが undefined を取得している理由は、あなたjが で始まるためですが、それは範囲外であるため、未定義になるstr.lengthはずです。str.length-1. str_arr1[str.length]

于 2012-06-01T20:51:43.730 に答える
0

エラーは 2 番目のforステートメントにあります。解決策を参照してください。

function FirstReverse(str) { 
    var str_arr1 = new Array();
    var ans = '';
    for(i=0; i < str.length; i++) {
        str_arr1.push(str.charAt(i));
    }
    for(j=str.length-1; j >= 0; j--) {
        ans += str_arr1[j];
    }
    return ans;
}
于 2012-06-01T20:45:32.327 に答える