抱歉,标题含糊不清-我不确定该如何形容。
这是场景:我有大量的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
返回1
,但daycode.length
返回3
,因为daycode
的值是wv0
,而wv0
的长度是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/