Js lodash每次返回相同的样本

时间:2014-12-16 09:28:19

标签: javascript object 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 个答案:

答案 0 :(得分:1)

在循环中创建 new 对象。使用普通对象文字(删除变量)很容易:

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

按照目前的情况,在循环的每个步骤中,您修改并推送相同的对象(存储在numsConfig var中)。


这是一种做同样事情的方法:

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