Js lodash каждый раз возвращает один и тот же образец

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

var primaryNumsCells = _.range(50);
var extraNumsCells = _.range(20);

var lottery = {lineConfigurations: []};


var numsConfig = {lineNumbers: {}};

    for( var i = 0; i < 2; i ++ ) {

      numsConfig.lineNumbers.primaryNumbers = _.sample(primaryNumsCells, 5);
      numsConfig.lineNumbers.secondaryNumbers = _.sample(extraNumsCells, 2);
      lottery.lineConfigurations.push(numsConfig);
    }

console.log(lottery);

Результаты первого объекта и второго объекта первичных и вторичных чисел одинаковы;

вот скрипка: http://jsbin.com/vavuhunupi/1/edit

1 ответ

Решение

Создайте новый объект внутри цикла. Это легко сделать с простым литералом объекта (отбрасывая переменную):

var lottery = {lineConfigurations: []};
for (var i = 0; i < 2; i++) {
  lottery.lineConfigurations.push({
    lineNumbers: {
      primaryNumbers: _.sample(primaryNumsCells, 5),
      secondaryNumbers: _.sample(extraNumsCells, 2)
    }
  });
}

На каждом этапе цикла вы изменяете и нажимаете один и тот же объект (хранится в numsConfig вар).


И здесь идет один из способов сделать то же самое:

var lottery = {
  lineConfigurations: _.map(_.range(2), function() {
    return {
      lineNumbers: {
        primaryNumbers: _.sample(primaryNumsCells, 5),
        secondaryNumbers: _.sample(extraNumsCells, 2)
      }
    };
  })
};
Другие вопросы по тегам