JavaScriptで文字列内の指定した文字の直後にある次の文字を取得する方法
課題
JavaScriptで、文字列 str と1文字の char を引数として受け取る関数を作成する必要があります。
この関数の役割は、元の文字列の中で char が現れる箇所をすべて見つけ、それぞれの直後に存在する文字(存在する場合のみ)を取り出して、それらを連結した新しい文字列を返すことです。
例えば、対象の文字が文字列の末尾に位置している場合、その直後に文字は存在しないため、結果には含まれません。
実装例
以下が実際のコードです。
const str = 'this is a string';
const letter = 'i';
const findNextString = (str = '', letter = '') => {
let res = '';
for(let i = 0; i < str.length; i++){
const el = str[i];
const next = str[i + 1];
if(letter === el && next){
res += next;
 };
};
return res;
};
console.log(findNextString(str, letter));コードの解説
この関数は以下の手順で動作します。
- ループ処理: 文字列の長さ分だけ繰り返し処理を行い、各位置の文字
elとその次の文字nextを取得します。 - 条件判定: 現在の文字が検索対象の
letterと一致し、かつ次の文字が存在する(undefinedでない)場合にのみ処理を進めます。 - 結果の構築: 条件を満たした場合、次の文字を結果用の変数
resに追加していきます。
この仕組みにより、文字列の末尾に検索対象の文字がある場合でもエラーが発生せず、安全に処理されます。
出力結果
ssn
コンソールには「ssn」と表示されます。
これは、元の文字列「this is a string」の中で「i」が現れる位置の直後にある文字を順番に並べたものです。具体的には、「this」の「i」の次は「s」、「is」の「i」の次も「s」、「string」の最初の「i」の次は「n」となり、これらが連結された結果になっています。
-
JavaScriptでアルファベットの1始まりのインデックスを取得する方法
問題JavaScriptで関数を作成する必要があります。この関数は、小文字の英字アルファベット1文字を受け取り、その文字がアルファベットの中で何番目に位置するかを「1始まり」のインデックスとして返します。例えば、a なら 1、j なら 10 を返すといったイメージです。無効な入力が渡された場合は -1 を返してエラーを通知すると親切です。実装の考え方最もシンプルな方法は、先頭に半角スペースを付けたアルファベット文字列「 abcdefghijklmnopqrstuvwxyz」を基準(レジェンド)として用意することです。こうすることで、スペースが0番目となり、a は1番目、j は10番目というよう
-
【JavaScript】反対方向の移動を打ち消して最終的な進行方向を求める方法
問題1文字ずつの要素からなる配列 arr を唯一の引数として受け取り、配列全体の移動をすべて計算した結果として残る「最終的な方向」を返す JavaScript 関数を作成します。配列に含まれるのは次の4種類の文字のみです。N → 北(North)方向へ単位距離だけ移動S → 南(South)方向へ単位距離だけ移動W → 西(West)方向へ単位距離だけ移動E → 東(East)方向へ単位距離だけ移動各文字はその方向への1単位分の移動を表します。ここで重要なルールとして、配列内で互いに反対向きの組み合わせ、すなわち (S と N) または (E と W) が隣接して現れた場合、それらは互いの移動