2017-10-13 5 views
1

なぜ左手側の割り当てが無効になっているのか不思議です。私のforループは、文字列の配列を反復処理し、数値(ASCII)を取得してそれを数えて変数に代入しますか?JavaScriptが無効になっています。

function getCharNumber(string1, string2) { 
    let count1 = 0 
    let count2 = 0 
    let strArray1 = string1.split('') 
    let strArray2 = string2.split('') 
    for (let i = 0; i < strArray1.length; i++) { 
    strArray1[i].charCodeAt(0) += count1 
    } 
    for (let i = 0; i <strArray2.length; i++) { 
    strArray2[i].charCodeAt(0) += count2 
    } 
    console.log(count1, count2) 
} 
+3

strArray1 [i] .charCodeAt(0)+ = count1'はどのようにしますか?あなたがしようとしているものなら、文字列を変更することはできません。 – Carcigenicate

+1

ところで、 'strArray1 [i] .charCodeAt(0)'は 'string1.charCodeAt(i)'に単純化することができます。 'charCodeAt()'は文字列をインデックスできるので、文字列を配列に分割する必要はありません。 – Barmar

+0

あなたの質問に対する答えは、[JavaScript strings](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)は不変で、コードは文字列を変更しようとしています。あなたのコードが何を達成しようとしているのかは分かりません。各文字を「シフト」して元の文字列を「暗号化」していますか?それは各入力文字列の文字数を数えていますか? –

答えて

2

String.prototype.charCodeAt()を呼び出して注文を取り消します。あなたは数に値を代入しようとしているので、あなたがエラーを取得している、count1count2

for (let i = 0; i < strArray1.length; i++) { 
    count1 += strArray1[i].charCodeAt(0); 
} 
for (let i = 0; i <strArray2.length; i++) { 
    count2 += strArray2[i].charCodeAt(0); 
} 
0

を呼び出しの結果を割り当て、他の人のように、述べています。

strArray1[i].charCodeAt(0) += count1 

は、B/Cあなたは数12に何かを割り当てることはできません動作しません

12 += count1 

と機能的に同等です。代わりに、直接インクリメントする必要があります

strArray1[i] = String.fromCharCode(strArray1[i].charCodeAt(0) + count1) 
関連する問題