最近、関数型プログラミングに興味を持ち、特にこれをJavaScriptでの私の作業にどのように適用するのかについては非常に興味を持っています。正規表現の使用に関する質問(リンクhere)に答えた後、私は関数型プログラミングのアプローチと比較するためにこれを使用する目的でもう少しアイデアを開発し続けました。Javascriptソリューションから関数型プログラミングへの変換
正規表現といくつかの入力を受け取り、オブジェクトの一致する配列を返す単純な入力パーサーを書くのが難題です(これは大きなソリューションのステップ1ですが、私は簡単に始めたいと思います)。私はより伝統的なアプローチで作業していますが、関数型プログラミングと同等のことをしたいのです(私はramda.jsを使用していますが、JavaScriptであれば関数型プログラミングのアプローチは可能です)。
ここで作業コードです:
var parseInput = function (re, input) {
var results = [], result;
while ((result = re.exec(input)) !== null) {
results.push({
startPos: result.index,
endPos: re.lastIndex - 1,
matchStr: result[1]
})
}
return results;
};
var re = /<%([^%>]+)%>/g;
var input = "A <%test.child%><%more%> name: <%name%> age: <%age%> EOD";
var results = parseInput(re, input);
console.log(results);
出力は私はこのようなルックスを得る:
[ { startPos: 2, endPos: 15, matchStr: 'test.child' },
{ startPos: 16, endPos: 23, matchStr: 'more' },
{ startPos: 31, endPos: 38, matchStr: 'name' },
{ startPos: 45, endPos: 51, matchStr: 'age' } ]
私が探しています構造とその結果です。
特に、私はRamDAと 'match()'関数を試していますが、探しているオブジェクトの配列を得るためのきれいな方法はありません。マッチの配列を取得して、私の現在のソリューションよりも邪魔にならないように見える元の入力でそれぞれを探します)。
ガイダンスをいただければ幸いです。
Scottに感謝します。これはまさに私が探していたものです!私は、正規表現の状態への依存を取り除く方法を見ることができなかったので、質問しました。あなたのソリューションはそれを提供します。私はデータフォーマットの分離が好きで、カレーに関するコメントも役に立ちました。 – rasmeister