используя для l oop, чтобы получить случайные объекты из одного массива и добавить их в другой - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь получить случайные объекты из одного массива (инвентаря) определенное количество раз и помещаю sh их в новый массив (randomInventory). Код ниже не работает. Любая помощь о том, что будет работать?

    var inventory = activity.options;
    var randomInventory = new Array();   
    var i;
    var item;
      for(i=0; i>10; i++){
        item = inventory[Math.floor(Math.random()*inventory.length)];
       randomInventory.push(item);
      } 
alert(randomInventory);

Ответы [ 2 ]

0 голосов
/ 14 марта 2020

Если вы просто пытаетесь перетасовать, вы можете сделать это:

var original = [{one: 1}, {two: 2}, {three: 2}];
var shuffled = randoSequence(original).map(i => i.value);

console.log(shuffled);
<script src="https://randojs.com/1.0.0.js"></script>

Если вы на самом деле не заботитесь о повторениях и хотите, чтобы была возможна различная длина, вы можете сделать это:

var original = [{one: 1}, {two: 2}, {three: 3}];
var randomized = [];
for(var i = 0; i < 5; i++) randomized.push(rando(original).value);

console.log(randomized);
<script src="https://randojs.com/1.0.0.js"></script>

Этот код использует rando js .com , поэтому, если вы хотите его использовать, просто убедитесь, что он в голове вашего html документа:

<script src="https://randojs.com/1.0.0.js"></script>
0 голосов
/ 14 марта 2020

Очень близко. Вам нужно изменить i>10 на i<10. Кроме того, это зависит от того, как выглядит оставшаяся часть вашей функции, но она должна быть хороша для go. Это работает ниже:

const go = () => {
   var inventory = [1,2,3,4,5];
   var randomInventory = new Array()  
   for(var i=0; i<10; i++){ // change to i<10
     var item = inventory[Math.floor(Math.random()*inventory.length)];
       randomInventory.push(item);
    } 
  return randomInventory
}

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