2014-04-17 71 views
1

我有用戶選擇天陣,表現爲這樣:計算平日的問題,JavaScript的

days_selected[1] = true; 
days_selected[2] = false; 
days_selected[3] = false; 
days_selected[4] = true; 
days_selected[5] = true; 
days_selected[6] = true; 
days_selected[7] = true; 

重點介紹了平日和真/假禮物,如果用戶選擇了一天

現在,我有當前工作日,

date_now.getDay() 

可以說當前工作日是週一,1我需要找到週一和被標記爲真正的第一天之間的天量;

我知道我可以簡單地循環日子,找到當天,並繼續循環,直到我絆倒在另一個真實的日子,然後減去值,但我如何計算在第6天是真實的,而第7天和1天都是假的,在這種情況下,它也將是在2天,我是可怕的數學:-)

passed = false; 
day = 0; 
$.each(days_selected, function(key, value) { 
    if (passed == true && value == true) { 
     day = key; 
     return false; 
    } 
    if (key == date_now.getDay()) { 
     passed = true; 
    } 
}); 
+0

會ŧ帽子包括當天的星期一,或者如果星期一是星期一,星期二 – adeneo

+0

,星期二是假的,那麼星期一和星期二之間會有1天 –

+0

我會*開始*使用相同的值'getDay'使用平日,從'0'(星期日)到'6'(星期六)開始。 –

回答

1
這個

什麼? (假設指數從0開始)

var today = date_now.getDay() 
    , i = today + 1; 

while (i % 7 != today && !days_selected[i % 7]) { 
    i += 1; 
} 

var interval = i - today - 1; 

檢查http://jsbin.com/jozotoke/1/edit

0

如何像

function nextTrue(arr, selected, toCheck) { 
    var first = arr.indexOf(toCheck, selected+1), 
     res = first > selected ? first : arr.indexOf(toCheck); 
    return Math.abs(res - selected); 
} 

用作

var diff = nextTrue(days_selected, date_now.getDay(), true); 

FIDDLE