JavaScriptで文字列を指定した数のパーツに分割する方法
この記事では、文字列と数値 n を引数として受け取り、元の文字列をできるだけ均等な長さの n 個の部分文字列に分割し、それらを配列として返す JavaScript 関数の実装方法を解説します。
文字列の長さが n で割り切れる場合はすべてのパーツが同じ長さになりますが、割り切れない場合でも、先頭から順に各パーツへ文字を振り分けていくことで、自然な形で分割することが可能です。
実装のポイント
以下のコードでは、split("") で文字列を1文字ずつに分解し、reduce() を使って各パーツに文字を順番に追加していきます。現在のパーツが目標の長さ(文字列全体の長さ ÷ n)に達した時点で、次のパーツへ移行する仕組みです。
サンプルコード
const str = 'we will be splitting this string into parts';
const num = 6;
const divideEqual = (str, num) => {
// 1パーツあたりの目標の長さを算出
const len = str.length / num;
const creds = str.split("").reduce((acc, val) => {
let { res, currInd } = acc;
// パーツが未作成、または目標の長さに達していなければ文字を追加
if(!res[currInd] || res[currInd].length < len){
res[currInd] = (res[currInd] || "") + val;
}else{
// 目標の長さに達したら次のパーツへ移行
res[++currInd] = val;
};
return { res, currInd };
}, {
res: [],
currInd: 0
});
return creds.res;
};
console.log(divideEqual(str, num));実行結果
[ 'we will ', 'be split', 'ting thi', 's string', ' into pa', 'rts' ]
結果の解説
この例で使った文字列は43文字あるため、6では割り切れません。そこで目標の長さ(約7.17文字)を基準に各パーツが8文字まで埋められ、余った3文字が最後のパーツに収まるという結果になっています。もし文字列の長さがちょうど n の倍数であれば、すべてのパーツが完全に同じ長さで出力されます。
slice() を使ったよりシンプルな書き方
もう少し簡潔に実装したい場合は、Math.ceil() で1パーツあたりの文字数を求め、slice() を使ってループ処理で切り出す方法もおすすめです。
const divideEqual = (str, num) => {
const size = Math.ceil(str.length / num);
const result = [];
for(let i = 0; i < str.length; i += size){
result.push(str.slice(i, i + size));
}
return result;
};
console.log(divideEqual('we will be splitting this string into parts', 6));
// [ 'we will ', 'be split', 'ting thi', 's string', ' into pa', 'rts' ]どちらの方法でも、文字列を指定した個数のパーツに柔軟に分割できます。用途や可読性の好みに応じて使い分けるとよいでしょう。
-
【JavaScript】文字列を整数に変換するparseInt()関数の使い方
JavaScriptで文字列を整数に変換するには、parseInt()関数を使用します。この関数は、引数として渡された文字列の中に数値が含まれている場合、その数値を整数として返します。一方、文字列に数値が一切含まれていない場合は、NaN(Not a Number:数値ではない)を返します。また、parseInt()関数はスペースを受け付けないという特徴があります。スペースを含む文字列が渡された場合は、スペースより前の部分にある数値だけが出力として返されます。parseInt()の構文parseInt(value);この関数は文字列を受け取り、それを整数に変換します。文字列の中に整数が存在しない
-
JavaScriptで文字列を真偽値(Boolean)に変換する方法
JavaScriptでは、文字列が「true」というリテラルと一致するかどうかを比較演算子で判定することで、文字列を実質的に真偽値(Boolean)として扱うことができます。ここでは、==(緩い等価比較)と===(厳密等価比較)の2つの方法を使った具体例を紹介します。 サンプルコード <!DOCTYPE html> <html> <head> <style> body { font-family: &