今日の仕事で、すでに書いた関数の逆を書く必要がある状況に出くわしましたが、逆を手動で書くのは非効率的であることがわかりました。元の関数を更新する必要があり、対応する変更で逆関数を更新する必要がありました。私が話している関数は次のようになります。
var f = function(id, str) {
if (id === 0) {
return str.substring(0, 4) + " " + str.substring(4, 8);
} else if (id === 1) {
return str.substring(0, 3) + "/" + str.substring(3, 8);
} else if (id === 2) {
return str.substring(0, 4) + "-" + str.substring(4, 8);
} else if (id == 3) {
return str.substring(0, 3) + "," + str.substring(3, 8);
}
}
たとえば、f(0, "ABCDEFGH")
を返し"ABCD EFGH"
ます。f(id, str)
関数を使用して出力から入力を取得する逆関数が必要です。したがってfinverse(formattedStr)
、対応する入力の辞書を返す必要があります。たとえば、finverse("ABCD EFGH")
を返す必要があり{ id: 0, str: "ABCDEFGH" }
ます。f
元の関数を追加の「else if」句で更新したとしても、更新する必要がないように、既存の関数を使用してこの逆を書くことは可能でしょうかfinverse
。言い換えれfinverse
ば、出力を入力に戻すために if ステートメントを使用して手動で構築するのではなく、元の関数を何らかの形で操作して逆関数を作成したいと考えています。これはJavaScriptで可能ですか?