Wie schreibe ich eine Funktion für den nächsten Werktag?

3 Antworten

Hallo.

Das kann aus drei Gründen nicht funktionieren.

  • Du setzt die Zählvariable hoch, bevor du die Überprüfung durchführst
  • In der Überprüfung vergleichst du einen String (day) mit der Zählvariable (i), nicht mit dem Arrayeintrag.
  • die + 1 für den nächsten Index gehört mit in die Klammern. Also [i+1] nicht [i]+1

Versuch es stattdessen mal so:

function getNextWeekday(day) {
	let i = 0;
	while (i < weekdays.length) {
		if (day == weekdays[i]) {
			console.log(weekdays[i+1]) ;
		}
		i = i + 1;
	}
}

Allerdings hast du hierbei das Problem, dass du bei Sonntag dann einen Index out of Bounds Error bekommst, weil Sonntag keinen Nachfolger hat. Du musst also dann noch die Zählvariable anpassen. Oder greifst auf den Vorschlag von Destranix zurück, der dieses Problem mit Modulo umgeht.

Und natürlich soll die Ausgabe ja mittels return Wert erfolgen, das musst du auch noch anpassen.

Du musst also noch ein bisschen Hand anlegen.

Woher ich das weiß:Studium / Ausbildung – Diplom Wirtschaftsinformatiker

lenamaur23 
Beitragsersteller
 11.11.2023, 15:15

Hallo vielen lieben Dank Dir. Ich mach gerade leider nur einen Einsteigerkurs, deshalb die doofe Frage: hast du irgend eine Website Empfehlung die behandelt, wie man die Zählervariable in so einem Fall anpasst?

0

Am besten verwendest du ein Modulo.

Das gibt dir den rest einer Ganzzahldivision aus.

Syntax:

a % b;

Beispiel:

0 % 3; //Ergebnis 0
1 % 3; //Ergebnis 1
2 % 3; //Ergebnis 2
3 % 3; //Ergebnis 0
...

lenamaur23 
Beitragsersteller
 11.11.2023, 14:26

Hallo, danke dir für die Antwort. Darf ich leider nicht benutzen, weil es eine bestimmte Vorgabe gibt.

Ich muss indexOf() oder einen while loop verwenden.

0
Destranix  11.11.2023, 14:28
@lenamaur23

Du kannst "indexOf" ja dnenoch verwdenen, das Modulo brauchst du erst wenn du den Index des aktuellen Tages hast.

Ansonsten machst du es halt so wie xTheForza schreibt (bzw. so ähnlich, du solltest am besten erst prüfen ob der übergebene Wochentag valide ist).

0

Wenn du einfach den nächten Werktag brauchst, dann:

function getNextWeekDay(day) {
  if (day === "Friday") {
    return weekdays[0];
  } else {
    return weekdays[weekdays.indexOf(day) + 1];
  }
}