2016-10-16 3 views
0

Я пытаюсь запустить цикл внутри цикла, чтобы получить допустимые даты, но, похоже, не работает нормально. моя выборка данных, какцикл в цикле в javascript

эти действительные дни [ 'Monday', 'Thursday', 'Friday', 'Sunday' ]

и они являются действительными даты

[ Sun Oct 09 2016 05:00:00 GMT+0500 (Pakistan Standard Time), 
    Mon Oct 10 2016 05:00:00 GMT+0500 (Pakistan Standard Time), 
    Tue Oct 11 2016 05:00:00 GMT+0500 (Pakistan Standard Time), 
    Wed Oct 12 2016 05:00:00 GMT+0500 (Pakistan Standard Time), 
    Thu Oct 13 2016 05:00:00 GMT+0500 (Pakistan Standard Time), 
    Fri Oct 14 2016 05:00:00 GMT+0500 (Pakistan Standard Time), 
    Sat Oct 15 2016 05:00:00 GMT+0500 (Pakistan Standard Time), 
    Sun Oct 16 2016 05:00:00 GMT+0500 (Pakistan Standard Time) ] 

То, что я хочу сделать: найти только те даты, которые равны VAid дней

Что я делаю это:

_valid_dates = (dates, days) -> 
    validDates = dates 
    dates.forEach (date) -> 
    days.forEach (day) -> 
     if moment_strf(date).strftime("%A") != day 
     validDates.remove date 
     else 
     console.log "Am valid day", moment_strf(date).strftime("%A") 

    validDates 

Но результаты не наступают, как я ожидаю. Согласно данным, оставшиеся даты должны быть

[ Sun Oct 09 2016 05:00:00 GMT+0500 (Pakistan Standard Time), 
    Mon Oct 10 2016 05:00:00 GMT+0500 (Pakistan Standard Time), 
    Thu Oct 13 2016 05:00:00 GMT+0500 (Pakistan Standard Time), 
    Fri Oct 14 2016 05:00:00 GMT+0500 (Pakistan Standard Time), 
    Sun Oct 16 2016 05:00:00 GMT+0500 (Pakistan Standard Time) ] 

Любая помощь будет оценена! Благодаря

+0

Что 'moment_strf' и' validDates .remove'? – godfrzero

+0

Сколько записей у вас в вашем результирующем наборе? Это всегда одно и то же или нет? Как ваши результаты заселяются? –

+0

'validDates = dates' - это мелкая копия (т. Е. Копируется только ссылка, а не то, на что она указывает), поэтому, возможно, вы попадаете в старый« удаление из массива при итерации по ней ». Вероятно, вам будет лучше составить отдельный список вещей, которые вы хотите, и оставить аргументы в покое. –

ответ

-1

Вы можете сделать это, просто используя только JavaScript:

Вместо того, чтобы полные имена в день массива вы можете использовать 0-6 в течение нескольких дней, а затем

//sunday=0,monday=1 ....saturday=6 
    var days=[1,4,5,0]; 
    var result_arr=[]; // required array for result 
    for(date in dates) 
    { 
     if(days.indexOf(new Date(date).getDay())!=-1) 
     { 
      result_arr.push(date); 
     } 
     } 
+0

U понял вопрос правильно? –

+0

@JunaidFarooq, я думаю, что то, что вы хотите получить по вышеуказанному коду, - это допустимые даты (у которых есть дни, доступные в массиве дней ['Monday', 'Thursday', 'Friday', 'Sunday']), поэтому, если бы я понял, код будет работать правильно, и если ваш вопрос отличается, пожалуйста, очистите его. Спасибо –

Смежные вопросы