1 1 2 2 3 3 1 4 2 1 3 2
J'ai besoin d'afficher à l'écran 2 numéros de ces tableaux, mais les tableaux ne sont pas égaux, donc je veux que le tableau le plus court recommence et forme des paires avec les nombres restants du tableau le plus long.
Fondamentalement, le principe est d'afficher 1 nom de chaque groupe chaque jour de travail à l'écran.
EX:
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];
}
}etc. p>
3 Réponses :
Voilà:
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);
Donc en général, pour toute étape N votre jetée est arr1 [N% arr1.length], arr2 [N% arr2.length]
Une solution élégante utiliserait l'opérateur% (modulo). Cet opérateur vous donne le reste après que le premier opérande est divisé par le deuxième opérande.
Par exemple:
7% 2 = 1
8% 5 = 3 p >
Si je comprends bien votre code, vous voulez juste afficher deux nombres, un dans chaque élément de document des identifiants name1 et name2 respectivement. Dans ce cas, il n'y a pas besoin de boucle.
document.getElementById("name1").innerHTML = names1[d % n1];
document.getElementById("name2").innerHTML = names1[d % n2];
Le nombre total de combinaisons possibles serait la multiplication de la longueur des tableaux n1*n2
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
Vous avez également du code redondant, n'utilisez qu'une seule variable pour la date
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]);
}
@Phong Je pense que cette question attend les 12 combinaisons possibles, mais seulement 6 sont répertoriées, c'est quoi etc. est ajouté à la fin de l'exemple de question
Combien de paires souhaitez-vous créer?
bien infini :)
Je veux une boucle que vous connaissez comme quand la date change, le tableau continue
désolé si je suis assez bayous
Désolé, j'ai du mal à comprendre ce qui doit être fait, donc je ne pense pas pouvoir vous aider, compte tenu de la description actuelle.
ok je comprends que je vais essayer de l'améliorer
votre quête est un peu déroutante, et le code semble être un peu en désordre. La première partie (... today.getDay () == 6 ...) est-elle pertinente? quel est le résultat exact que vous souhaitez obtenir de vos données (noms1, noms2)
oui, c'est pertinent car j'essaie d'afficher à l'écran 2 numéros ou noms, dans ce cas, ce sont des chiffres, juste les jours ouvrables du lundi au vendredi