J'ai un code ici qui obtient 6 nombres non répétitifs compris entre 0 et 45, il y a jusqu'à présent son travail, sauf que je veux une boucle de modifier mes numéros de sorte que si le nombre soit inférieur à 10, il ajoute un 0 à l'avant, Pour que chaque nombre ait le format "xx", par exemple "07", "25", "00"
im essayant de faire une boucle pour mon code, mais ça se casse à chaque fois que je l'essaie. J'essaie de réduire la longueur de mon code avec ceci pour la boucle. P>
Mon code travaille maintenant, mais j'ai une méchante 6 déclarations de Si SI. P>
J'ai déjà essayé cela: P>
function randomNo(){
function arrayShuffle () {
var i = this.length, j, temp;
if ( i === 0 ) return false;
while ( --i ) {
j = Math.floor( Math.random() * ( i + 1 ) );
temp = this[i];
this[i] = this[j];
this[j] = temp;
}
}
Array.prototype.shuffle =arrayShuffle;
var start = 0;
var end = 45;
var numbers = new Array();
for (var i = start; i <= end; i++) {
numbers.push(i);
}
numbers.shuffle();
var n1 = numbers.pop();
var n2 = numbers.pop();
var n3 = numbers.pop();
var n4 = numbers.pop();
var n5 = numbers.pop();
var n6 = numbers.pop();
// Should replace for a for loop, but I cant figure it out
// Replace in html
console.log(n1);
console.log(n2);
console.log(n3);
console.log(n4);
console.log(n5);
console.log(n6);
}
randomNo();
4 Réponses :
Convertissez le numéro en chaîne, puis:
1) Utilisez p> Padstart code> Méthode des chaînes: P> function ex(numb) {
return numb.toString().length < 2 ? `0${numb}` : numb;
}
console.log(ex(1));
console.log(ex(154));
console.log(ex(13));
console.log(ex(9));
fais cela au moment de remplissage: mais si vous voulez simplement un tableau de 6 nombres aléatoires compris entre 0 et 45, vous pouvez générer un tableau de 6 éléments vides (non définis), que Vous en boucle et remplissez avec un nombre aléatoire 0 ~ 45: p> p> for(let num in numbers){
document.querySelector(`.rn${num}`).innerText = num;
}
J'ai oublié d'ajouter que les 6 chiffres aléatoires ne peuvent pas se répéter
Ah, oublie mon générateur alors :)
Je suggère d'utiliser la carte ()
p>
function arrayShuffle () {
var i = this.length, j, temp;
if ( i === 0 ) return false;
while ( --i ) {
j = Math.floor( Math.random() * ( i + 1 ) );
temp = this[i];
this[i] = this[j];
this[j] = temp;
}
}
Array.prototype.shuffle =arrayShuffle;
var start = 0;
var end = 45;
var numbers = new Array();
for (var i = start; i <= end; i++) {
numbers.push(i);
}
numbers.shuffle();
numbers = numbers.map(function (n) {
return n < 10 ? "0" + n : n.toString();
});
console.log(numbers);Si l'idée est juste d'obtenir 6 valeurs aléatoires 'int.t.tostring' 2 chiffres dans 6 js vars avec le même nom de préfixe et un nombre compris entre 0 et un numéro de 46, pas besoin de créer une emballage ou une matrice:
var randomIntStr = {
_list : [],
GetNoRepeat(max) {
let r = 0;
do { r = Math.floor(Math.random() * Math.floor(max)); }
while (this._list.includes(r));
this._list.push(r);
return r < 10 ? "0" + r : r.toString();
}
};
for (let i=1; i<7;i++) {
window['n'+i] = randomIntStr.GetNoRepeat(46);
}
console.log('n1 =', n1);
console.log('n2 =', n2);
console.log('n3 =', n3);
console.log('n4 =', n4);
console.log('n5 =', n5);
console.log('n6 =', n6);
Créez un violon ici avec le bouton <> pour reproduire le problème et indiquez-nous ce que la console de votre navigateur vous indique est l'erreur de votre code.
Vous fondiez la chaîne et le nombre. utiliser parseint; et déboguer votre code (F12)
S'il vous plaît, essayez d'ajouter un titre plus significatif à vos questions
@Leliofaieta a fait, merci,
@MRJ
parseint code> autour de la valeur à un chiffre à un chiffre, donc02 code> sera arrondi sur2 code> et ce qu'il veut, bien que je ne veux pas Je ne suis pas sûr de ce qu'il veut.@MRJ - Je veux que mon code fait réellement, mais sans ces 6 déclarations que j'ai ajoutées, parce que je crois que c'est juste une mauvaise pratique et j'essaie d'apprendre. Je fais un générateur de nombres aléatoires non répétitifs qui crache 6 chiffres compris entre 0 et 45, sauf que je veux que chaque nombre de moins de 10 soit dans le format "xx", donc 2 sera 02 et 7 sera 07 et 0 sera 07 et 0 sera 00.
var numéro = i <10? "0" + I: i; code> est une mauvaise réponse, si le numéro est <10, il renvoie une chaîne, sinon elle renvoie une intergère => Ceci est un mélange. Mieux vaut fairevar numstr = i <10? "0" + i: i.tostring (); code> comme Robert suggère@MRJ Merci d'avoir souligné cela, je vais corriger cela afin que toutes mes contributions soient des chaînes.
Alors, avez-vous remarqué ma réponse sur une boucle pour créer vos variables?
@MRJ Oui, je l'ai fait, mais cela ne fonctionne pas pour moi, car j'ai besoin de valeurs non répétées.
Par valeurs non répétitives, voulez-vous dire que toutes les valeurs doivent être différentes? __ donc j'ai changé mon code