0

I want to loop an array but unfortunately my for-loop only executes 1 time.

This is my code:

var cmpz_disabled_dates=$.parseJSON(disabled_dates);
var date = new Date();
console.log(cmpz_disabled_dates);
for (i = 0; i < cmpz_disabled_dates.length; i++) {
    var type = cmpz_disabled_dates[i]["type"];
        if(type === "ebdida_day")   {
            var disabled_day = Number(cmpz_disabled_dates[i]["disabled"]) + 1;
            if(disabled_day == 8)   {
                disabled_day = 0;
            }
            var day = date.getDay();
            console.log(i,date,day,disabled_day);
            return [(disabled_day != day)];
    }
}

OUTPUT of console.log(cmpz_disabled_dates);

0: {type: "ebdida_day", disabled: "7", repeat: "off", calendar: "start_end"}
1: {type: "ebdida_date_range", disabled: Array(2), repeat: "on", calendar: "start_end"}
2: {type: "ebdida_date", disabled: "2020-04-10", repeat: "off", calendar: "start_end"}
3: {type: "ebdida_date", disabled: "2020-04-13", repeat: "off", calendar: "start_end"}
4: {type: "ebdida_date_range", disabled: Array(2), repeat: "off", calendar: "start_end"}
5: {type: "ebdida_date", disabled: "2020-05-01", repeat: "off", calendar: "start_end"}
6: {type: "ebdida_date", disabled: "2020-05-21", repeat: "off", calendar: "start_end"}
7: {type: "ebdida_date", disabled: "2020-06-01", repeat: "off", calendar: "start_end"}
8: {type: "ebdida_date_range", disabled: Array(2), repeat: "off", calendar: "start_end"}
9: {type: "ebdida_date_range", disabled: Array(2), repeat: "off", calendar: "start_end"}
10: {type: "ebdida_date_range", disabled: Array(2), repeat: "off", calendar: "start_end"}
11: {type: "ebdida_date_range", disabled: Array(2), repeat: "off", calendar: "start_end"}
12: {type: "ebdida_date_range", disabled: Array(2), repeat: "off", calendar: "start_end"}
13: {type: "ebdida_day", disabled: "3", repeat: "off", calendar: "start_end"}
14: {type: "ebdida_day", disabled: "6", repeat: "off", calendar: "start_end"}
length: 15

OUTPUT of console.log(i,date,day,disabled_day);

0 Wed Sep 23 2020 08:48:48 GMT+0200 (Mitteleuropäische Sommerzeit) 3 0

--> so it is only outputting element 0, the elements 13 and 14 (which are also from type "ebdida_day") are not outputted

I think, the for-loop is overwriting something but I cannot find the bug. Thanks!

1
  • 1
    A return inside a loop breaks that loop on the first iteration Commented Sep 23, 2020 at 7:03

3 Answers 3

1

Remove return statement in your for loop

Sign up to request clarification or add additional context in comments.

1 Comment

OK I get it. I needed the return but now I managed to only break the loop when it get "false". Thanks!
1

You have a return which breaks the iteration.

Comments

1

Set return statement outside the for loop block, otherwise the iteration stops

var cmpz_disabled_dates=$.parseJSON(disabled_dates);
var date = new Date();
console.log(cmpz_disabled_dates);
for (i = 0; i < cmpz_disabled_dates.length; i++) {
    var type = cmpz_disabled_dates[i]["type"];
        if(type === "ebdida_day")   {
            var disabled_day = Number(cmpz_disabled_dates[i]["disabled"]) + 1;
            if(disabled_day == 8)   {
                disabled_day = 0;
            }
            var day = date.getDay();
            console.log(i,date,day,disabled_day);        
    }
    return [(disabled_day != day)];
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.