Как я могу правильно сделать цикл для моих переменных? - PullRequest
0 голосов
/ 02 января 2019

У меня есть код, который получает 6 НЕ повторяющихся чисел от 0 до 45, пока он работает, за исключением того, что я хочу, чтобы цикл изменял мои числа так, чтобы, если число было меньше 10, он добавлял 0 вперед, так что каждое число имеет формат «xx», например «07», «25», «00»

Я пытаюсь сделать цикл for для своего кода, но он прерывается каждый раз, когда я пытаюсь это сделать. Я пытаюсь уменьшить длину моего кода с помощью цикла for.

Мой код сейчас работает, но у меня есть неприятные 6 операторов if.

Я уже пробовал это:

    var z;
    for (z = 1; z < 7; z++) { 
      if (n[z] < 10) {
        n[z] = "0" + n[z];
      }
    }

Это мой код:

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

Каждый раз, когда я пробовал цикл for, мои числа вообще перестали работать, а в HTML я получаю только исходный текст, который ожидает замены с помощью средства выбора запросов.

Ответы [ 4 ]

0 голосов
/ 02 января 2019

Если идея состоит в том, чтобы просто получить 6 случайных двухзначных значений 'int.toString' в 6 переменных JS с тем же именем префикса и числом от 0 до 46, нет необходимости создавать обертку или массив:

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 голосов
/ 02 января 2019

Сделайте это во время заполнения:

for (var i = start; i <= end; i++) {
        numbers.push((i < 10 ? "0" : "") + i); // This will generate "08", "09", "10"
}

Но если вы просто хотите получить массив из 6 случайных чисел от 0 до 45, вы можете сгенерировать массив из 6 пустых (неопределенных) элементов, которые вы зациклите и заполните случайным числом от 0 до 45:

let numbers = Array.from(Array(6)).map(() => {
  let n = Math.floor(Math.random()*46);
  return (n < 10 ? "0" : "") + n
})

console.log(numbers)

... что вы можете затем зациклить:

for(let num in numbers){
     document.querySelector(`.rn${num}`).innerText = num;
}
0 голосов
/ 02 января 2019

Я предлагаю использовать карту ()

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 голосов
/ 02 января 2019

Преобразовать число в строку, затем:

1) Использовать padStart метод строк:

function ex(inp) {
  return inp.toString().padStart(2, '0');
} 

console.log(ex(1));
console.log(ex(154));
console.log(ex(9));

2) Проверьте длину строки и, если она меньше 2, добавьте начальный 0:

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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...