Проблема с сортировкой случайно сгенерированного массива по возрастанию в javascript - PullRequest
0 голосов
/ 09 июля 2020

Здравствуйте, можно ли отсортировать эти случайные сгенерированные числа в порядке возрастания? Я создаю случайные 40 чисел из 100, которые уникальны, но когда я пытаюсь их отсортировать, они всегда не в порядке в коробках. Я пробовал сортировать, пузыри или добавлять длину, но результат всегда один и тот же. Я знаю, что это очень базовая c, но, возможно, в моем коде чего-то не хватает ... вот последняя настройка, которую я пробовал ...

  var randomNums = [];
  randomNums.sort(function (a,b) {
    return b - a;
  })
  for(var i = 0; i < 40 ; i++) {
    var temp = Math.floor(Math.random() * 100);
    if (randomNums.indexOf(temp) == -1) {
      randomNums.push(temp);
      document.getElementById("box"+i).innerHTML = randomNums [i];
    }
    else {
      i--;
    }
  }
 }```

Ответы [ 3 ]

1 голос
/ 09 июля 2020

Оригинал

var randomNums = [];
  randomNums.sort(function (a,b) {
    return b - a;
  })
  for(var i = 0; i < 40 ; i++) {
    var temp = Math.floor(Math.random() * 100);
    if (randomNums.indexOf(temp) == -1) {
      randomNums.push(temp);
      document.getElementById("box"+i).innerHTML = randomNums [i];
    }
    else {
      i--;
    }
  }
 }
  1. Если вам нужно отображать числа в порядке возрастания, вам понадобится еще for l oop после сортировки массива .

Исправлено

  var randomNums = [];
  //you have an empty array. this is not the right time to sort
  /*randomNums.sort(function (a,b) {
    return b - a;
  })*/
  for(var i = 0; i < 40 ; i++) {
    var temp = Math.floor(Math.random() * 100);
    if (randomNums.indexOf(temp) == -1) {
      randomNums.push(temp);
      document.getElementById("box"+i).innerHTML = randomNums [i];
    }
    else {
      i--;
    }
  }
  //#
  //you can now sort the array in ascending order after it has been populated
  randomNums.sort(function (a,b) {
    //the next line would yield a descending order
    //return b - a;
    return a - b;
  })
  //#create a new loop here to display the randomly generated numbers
  var len = randomNums.length;
  for(var i = 0; i < len; i++) {
    document.getElementById("box"+i).innerHTML = randomNums[i];
  }
 //}
0 голосов
/ 09 июля 2020

Возможное решение может быть, например:

// create random numbers
const size = 40
const randomNums = []
while (randomNums.length < size) {
  const randomNum = Math.floor(Math.random() * 100)
  if (randomNums.indexOf(randomNum) === -1) {
    randomNums.push(randomNum)
  }
}

// sort random numbers
const randomNumsSorted = randomNums.concat().sort(
  (a, b) => a - b
)

// output random numbers to html
for (let i = 0; i < size; i++) {
  document.getElementById(`box${i}`).innerHTML = randomNumsSorted[i]
}
0 голосов
/ 09 июля 2020

Вы сортируете массив перед вставкой чисел. Переместить:

randomNums.sort(function (a,b) {
 return b - a;
})

после l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...