2016-12-07 8 views
0

これはちょっと気が狂っています。 JavaScriptが新しく、年齢指定でコード化されていません。私は、文字列をcharCodeに変換して配列にダンプしようとしています。これは、現在のコードです:配列にcharCodesを挿入する際の問題

function fillArray(str) { 
var arr=[]; 

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

    arr.push(str.charCodeAt(str.charAt(i))); 
    } 

    return arr; 
} 

何が起こって終了すると、私はそれを「ABCD」のような文字列を送信した場合、それは[97,97,97,97]を返しますです。 charAt(i)が反復処理されるべきであるにもかかわらず、配列は文字列内の最初の文字だけを見ることによって形成されるように見えます。私は何が欠けていますか?

答えて

2

charCodeAtは、あなたがしたい文字ではなく、実際の文字のインデックスを取ります。

arr.push(str.charCodeAt(i)); 
+0

が、彼は、 '*として)' .charAt(からの戻り値を渡しているため、なぜ、彼はすべての時間 – Mahi

+2

@Mahi 97を取得しているが* .charCodeAt()によって使用されるインデックス**。これは一般に 'NaN'と評価されます。これは' charCodeAt() 'が' 0'と等価であると受け入れます。 – Pointy

+0

@Pointyありがとうございました。 :-) – Mahi

1

部分を削除してください。 Crowderは指摘すると、String.prototype.charCodeAt()はパラメータとしてインデックスを取ります。あなたは97のすべての時間を取得している理由は、(MDNから)です:

それ[パラメータ]が数値でない場合は、0

がデフォルトだから、常に最初に取り手紙で、(インデックス0)「」とその文字コードは、あなたが、アレイ(ダンプ)で、あなたの文字列を分割し、そのascciコード(予想transfarmation)で各文字をマップすることができ97

0

です。このように、あなたはJSですぐにそれを記述します。

var fillArray = str => str.split("").map(x => x.charCodeAt(0)); 
 
console.log(fillArray("bonjour le monde"));

関連する問題