0
votes

Comment puis-je faire correctement une boucle pour mes variables?

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();


11 commentaires

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 autour de la valeur à un chiffre à un chiffre, donc 02 sera arrondi sur 2 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; 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 faire var numstr = i <10? "0" + i: i.tostring (); 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


4 Réponses :


2
votes

Convertissez le numéro en chaîne, puis:

1) Utilisez Padstart code> Méthode des chaînes: P>

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));


0 commentaires

0
votes

fais cela au moment de remplissage: xxx pré>

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;
}


2 commentaires

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 :)



0
votes

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);


0 commentaires

-1
votes

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);  


0 commentaires