var today = new Date();
if (today.getDay() == 6 || today.getDay() == 0) {

  document.getElementById("name1").innerHTML = "WEEKEND";
  document.getElementById("name2").innerHTML = "WEEKEND";

} else {

  var d = new Date().getDay();
  var names1 = ['1', '2', '3'];
  var names2 = ['1', '2', '3', '4'];
  var n1 = names1.length;
  var n2 = names2.length;

  for (var i = 0; i < n1; i++) {
    document.getElementById("name1").innerHTML = names1[d - 1];
  }

  for (var j = 0; j < n2; j++) {
    document.getElementById("name2").innerHTML = names2[d - 1];
  }
}

Ich muss auf dem Bildschirm 2 Zahlen aus diesen Arrays anzeigen, aber die Arrays sind nicht gleich, daher möchte ich, dass das kürzere Array erneut startet und Paare mit den verbleibenden Zahlen aus dem längeren Array bildet.

Grundsätzlich besteht die Voraussetzung darin, an jedem Arbeitstag 1 Namen aus jeder Gruppe auf dem Bildschirm anzuzeigen.

EX:

1 1
2 2
3 3
1 4
2 1
3 2

Etc.

1
MTimo27 23 Feb. 2020 im 15:40

3 Antworten

Beste Antwort

Die Gesamtzahl der möglichen Kombinationen wäre die Multiplikation der Arraylänge n1*n2

var d = 1; // new Date().getDay()
var names1 = ['1', '2', '3'];
var names2 = ['1', '2', '3', '4'];
var n1 = names1.length;
var n2 = names2.length;

for (var i = 0; i < n1 * n2 ; i++) {
  console.log(names1[i%n1], names2[i%n2]);
}

Wenn Sie redundanten Code haben, verwenden Sie nur eine Variable für das Datum

var today = new Date().getDay()
if (today == 6 || today == 0) {

  document.getElementById("name1").innerHTML = "WEEKEND";
  document.getElementById("name2").innerHTML = "WEEKEND";

} else {
  // var d is the same as var today
2
Jacek Rojek 23 Feb. 2020 im 13:06

Eine elegante Lösung würde den Operator% (Modulo) verwenden. Dieser Operator gibt Ihnen den Rest, nachdem der erste Operand durch den zweiten Operanden geteilt wurde.

Beispielsweise:

7% 2 = 1

8% 5 = 3

Wenn ich Ihren Code richtig verstehe, möchten Sie nur zwei Zahlen anzeigen, eine in jedem Dokumentelement der IDs name1 bzw. name2. In diesem Fall ist keine Schleife erforderlich.

document.getElementById("name1").innerHTML = names1[d % n1];
document.getElementById("name2").innerHTML = names1[d % n2];
1
wxker 23 Feb. 2020 im 12:51

Bitte schön:

var N = 20; // or whetever
var arr1 = [1, 2, 3];
var arr2 = [1, 2, 3, 4];

var res = [];
for(var i=0; i<N; i++){
  res.push(arr1[i%arr1.length]);
  res.push(arr2[i%arr2.length]);
}
console.log(res);

Im Allgemeinen ist Ihr Pier für jeden Schritt N arr1[N%arr1.length], arr2[N%arr2.length]

2
Yosef Tukachinsky 23 Feb. 2020 im 12:48