【发布时间】:2013-06-29 02:31:28
【问题描述】:
我今天在工作中遇到了一种情况,我需要编写我已经编写的函数的逆函数,但我发现手动编写逆函数效率低下,因为我似乎会重复很多我的代码,如果我要更新原始函数,我将不得不使用相应的更改来更新逆函数。我正在谈论的函数看起来像这样:
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。换句话说,我不想使用 if 语句手动构造 finverse 以将输出映射回输入,而是我想以某种方式操纵原始函数以提出逆向函数。这在javascript中可能吗?
【问题讨论】:
标签: javascript function lambda functional-programming