JavaScriptで数値配列内の母音(ASCIIコード)を判定して置換する方法
問題
ここで求められているのは、数値の配列を受け取るJavaScript関数を作成することです。配列の中に、ASCIIコードとして母音(a・e・i・o・u)に該当する数値が存在する場合、その数値を対応する母音の文字に置き換え、変換後の新しい配列を返す必要があります。
考え方
ASCIIコードでは、小文字の母音はそれぞれ「a」= 97、「e」= 101、「i」= 105、「o」= 111、「u」= 117 に対応しています。そこで、String.fromCharCode() を使って各数値を文字に変換し、その文字が母音かどうかを判定すればよいわけです。母音に一致した要素だけを文字へ置き換えます。
実装例
以下が実際のコードです −
const arr = [5, 23, 67, 101, 56, 111];
const changeVowel = (arr = []) => {
for (let i=0, l=arr.length; i<l; ++i){
let char = String.fromCharCode(arr[i])
if ('aeiou'.indexOf(char) !== -1){
arr[i] = char;
};
};
return arr;
};
console.log(changeVowel(arr));
出力結果
[ 5, 23, 67, 'e', 56, 'o' ]
コードの解説
この関数では、forループによって配列の各要素を順番に処理しています。String.fromCharCode(arr[i]) で数値を対応する文字に変換し、'aeiou'.indexOf(char) !== -1 という条件式で、その文字が母音であるかどうかをチェックしています。一致した場合は、配列の該当要素を文字に置き換えます。
上記の例では、101 は「e」、111 は「o」に該当するため、これら2つの要素だけが文字へ変換され、それ以外の要素は元の数値のまま返されます。
-
JavaScriptで配列の反復に「for...in」を使うのはなぜ悪いのか?理由と代替手段を解説
JavaScriptでfor...inによる配列の反復が推奨されない理由JavaScriptでは、for...inループを使って配列を反復処理することは避けるべきだとされています。その主な理由は、予期しない挙動を引き起こす可能性があるためです。具体的な例を見てみましょう。通常のforループを使用した場合まず、一般的なforループで配列を反復処理した例です。let arr = [] arr[4] = 5 for (let i = 0; i < arr.length; i++) { console.log(arr[i]) }出力結果undefi
-
JavaScriptのオブジェクト配列に配列メソッドを適用する方法
JavaScriptでは、オブジェクトが格納された配列に対しても、通常の配列と同じようにpop()、push()、splice()などの標準的な配列メソッドをそのまま使用できます。オブジェクト配列はあくまで「配列」であるため、要素としてオブジェクトが入っていても配列操作のAPIは共通で動作します。 コード例 以下は、JavaScriptオブジェクトの配列に対して配列メソッドを使用するサンプルコードです。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8