JavaScriptでString.prototype.split()のようなカスタム関数を自作する方法
課題
JavaScriptのStringクラスのプロトタイプオブジェクトに、split関数と同様の動作をするカスタム関数を実装してみましょう。
この関数は、区切り文字(セパレーター)となる文字列を唯一の引数として受け取ります(元のsplit関数は2つの引数を取りますが、ここではシンプルに1つだけにします)。そして、受け取った文字列をセパレーターで分割し、その各部分を要素として持つ配列を返す必要があります。
実装例
以下が実際のコードです。
const str = 'this is some string';
String.prototype.customSplit = (sep = '') => {
const res = [];
let temp = '';
for(let i = 0; i < str.length; i++){
const el = str[i];
if(el === sep || sep === '' && temp){
res.push(temp);
temp = '';
};
if(el !== sep){
temp += el;
}
};
if(temp){
res.push(temp);
temp = '';
};
return res;
};
console.log(str.customSplit(' '));
このコードの仕組みを簡単に解説します。まず、結果を格納するための空の配列 res と、現在の文字を一時的に保持する変数 temp を用意します。次に、文字列を1文字ずつループで走査し、現在の文字がセパレーターと一致した場合には、それまで蓄積していた文字列を配列に追加してリセットします。セパレーターが空文字の場合は、1文字ごとに分割されます。最後に、残った temp が空でなければ、末尾の部分文字列として配列に追加して完了です。
出力
上記のコードを実行すると、コンソールには次のような結果が出力されます。
[ 'this', 'is', 'some', 'string' ]
このように、セパレーターとして半角スペースを渡すことで、文字列が単語ごとに正しく分割され、配列として取得できていることが確認できます。
-
JavaScriptのsplit()メソッドの使い方を実例つきで解説
split()メソッドとはJavaScriptのsplit([separator, [limit]])メソッドは、文字列(Stringオブジェクト)を指定した区切り文字列(セパレータ)に基づいて複数の部分文字列に分割し、その結果を文字列の配列として返すメソッドです。CSV形式のデータ処理やユーザー入力の解析など、文字列を扱う場面で非常によく使われる基本的なメソッドの一つです。splitメソッドの基本的な使い方まずは、カンマで区切られた文字列を配列に変換する最も一般的な例を見てみましょう。let a = hello,hi,bonjour,namaste; let greetings = a.sp
-
JavaScriptのArray.prototype.map()メソッドの使い方を徹底解説
Array.prototype.map()とは? JavaScriptのArray.prototype.map()メソッドは、配列の各要素に対してコールバック関数を実行し、その戻り値から新しい配列を作成するためのメソッドです。元の配列は変更されないため、安全にデータ変換を行いたい場合に非常に便利です。 構文 arr.map(function callback(currentValue[, index[, array]]) 各引数の意味は以下のとおりです。 currentValue:現在処理している要素の値 index(省略可能):現在処理している要素のインデックス番号 array(省略可能