2017-06-21 10 views
0

配列の特定のインデックスに対してstr.charCodeAt()を使用しようとしています。 これは動作していないコードである。str.charCodeAt()が配列で動作しない

function rot13(str) { 

    str = str.split(""); 

    for (i = 0; i < str.length; i++) { 

    str[i] = str.charCodeAt(i); 


    } 


    return var1; 
} 

rot13("SERR"); 

エラーがある: "例外TypeError:str.charCodeAt()関数ではありません"。

これは、配列インデックスを変数に代入してから変数に代入すると機能しますか?これを行う必要がありますか、それとも配列に対して行う方法はありますか?

var1 = str[i]; 
var1 = var1.charCodeAt(); 
str[i] = var1; 
+0

あなたは 'str.charCodeAt'、ない' STR [i]の.charCodeAt'を書きました。 'str'と呼ばれる変数のように、文字列を含むこともあり、時には配列を含むこともあります。 – Ryan

+0

なぜあなたは 'var1'を返すのですか?あなたの関数には存在しません。 – synthet1c

+0

' var1'を返しますが、決して定義しませんか? – BenM

答えて

2

charCodeAt()文字列だけではなく、アレイ上で動作します:それはだ変数で

。配列要素にアクセスする必要があります。各配列要素には1つの要素を含む文字列が含まれていますが、その文字列にはcharCodeAt()を使用できます。

str[i] = str[i].charCodeAt(0); 

しかし、文字列を最初に配列に分割する必要はありません。結果配列には異なる変数を使用できます。あなたはCHARCODEを返す文字の配列の上にマッピングすることで、より機能的なアプローチを使用することができます

function rot13(str) { 
 
    var result = []; 
 
    for (var i = 0; i < str.length; i++) { 
 
    result[i] = str.charCodeAt(i); 
 
    } 
 
    return result; 
 
} 
 

 
console.log(rot13("SERR"));

0

const rot13 = (str) => str.split("").map(x => x.charCodeAt(0)) 
 

 
console.log(
 
    rot13("SERR") 
 
)

0

あなたはstrが配列になっていないと、それはもうStringであることを行うと、あなたがここに複数の問題、

str = str.split(""); 

を持っているように見えます。それがエラーを起こす理由です。

あなただけのスプリット関連のコードとマイナーな修正の後を削除するだけです、それが正常に動作する必要があり

function rot13(str) { 
    var var1=[]; 
    for (i = 0; i < str.length; i++) { 
    var1[i] = str.charCodeAt(i); 
    } 
    return var1; 
} 
0

だけArray.prototype.from、しかし、あなたはおそらくに文字列を分割する必要はありません心Stringは反復可能なオブジェクトであるため、配列です。

function rot13(str) { 
 

 
    return Array.from(str, (char, i) => str.charCodeAt(i)) 
 
} 
 

 
console.log(rot13("SERR"));

関連する問題