javascript - 如何根据变量复制函数?

标签 javascript

抱歉,标题含糊不清——我不知道还能如何描述。

场景如下:我有大量 if 语句试图执行类似下面代码的操作:

var wv == today.getDate();

if(wv == 0){
wv0.forEach(function(entry, index)...

if(wv == 1){
wv1.forEach(function(entry, index)...

if(wv == 2){
wv2.forEach(function(entry, index)...

问题在于,对于每个代码块,wvX.forEach 之后的所有内容都是相同的。因此我知道它可以被压缩,但我不知道该怎么做。

我尝试做的是定义一个新变量,它会根据具体日期为我提供 wvX 数字:

var daycode = 'wv' + getDate();

现在它给了我(所以今天,周日,它会返回 wv0,但是当我尝试像这样压缩上面的内容时:

if (wv == 0)
daycode.forEach(function(entry, index)...

即使这样也行不通。我知道它只适用于 wv == 0 或星期日,但它仍然根本不起作用。然而,

if (wv == 0)
wv0.forEach(function(entry, index)...

尽管它与上面的代码块相同,但仍然有效,如现在的 daycode = wv0

编辑:所以我刚刚意识到一些事情。这可能是因为 daycode 被视为变量。例如,即使 wv0.length 返回 1daycode.length 返回 3,因为 的值code>daycodewv0wv0 的长度为 3。那我还能怎么做呢?

最佳答案

你可以做这样的事情,我认为这是惯用的,并且不诉诸 eval。

var f = function(entry, index){ ... };
var mappings = { 0: wv0, 1: wv1...};
var wv = today.getDate();
mappings[wv].forEach(f);

将日期结果显式映射到您要迭代的对象。

关于javascript - 如何根据变量复制函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33201030/

相关文章:

javascript - 具有特定类名的 Div 的元素

javascript - 在 HTML 中的超链接事件上显示文本文件

javascript - 删除矢量图层

javascript - 隐藏列表中的标签,具体取决于它是否以 jquery 的子字符串结尾

javascript - 如何修复vuejs中的 "ReferenceError: require is not defined"

javascript - 如何使用reduce迭代数组

javascript - 如何通过 jquery 分割我的值集

javascript - 在 node.js 中使用 tty 生成子进程

javascript - 如何防止 jQuery Mobile 可折叠展开?

javascript - 输入行前面的前缀