我今天在工作中遇到了一种情况,我需要编写我已经编写的函数的逆函数,但是我发现手动编写逆函数效率很低,因为我似乎会重复很多代码,如果我要更新原始函数,我必须用相应的更改来更新逆函数。我正在谈论的功能看起来像这样:
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中可能吗?