Js lodash 每次都返回相同的样本

Js lodash return the same sample every time

本文关键字:样本 返回 lodash Js      更新时间:2023-09-26

我想用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

在循环中创建一个对象。使用纯对象文字(删除变量)很容易做到:

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

就目前而言,在循环的每一步,您都会修改并推送相同的对象(存储在 var numsConfig 中)。


这里有一个做同样事情的lodash方法:

var lottery = {
  lineConfigurations: _.map(_.range(2), function() {
    return {
      lineNumbers: {
        primaryNumbers: _.sample(primaryNumsCells, 5),
        secondaryNumbers: _.sample(extraNumsCells, 2)
      }
    };
  })
};