javascript - 如何编写一个函数来创建一定长度的对象数组?对象具有自定义生成的数据

标签 javascript arrays object

我有一个带有随机生成数据的对象:

var obj = {
   price: getRandomNumberRange(10, 200),
   rooms: getRandomNumberRange(1, 5)
   };

哪里

var getRandomNumberRange = function (min, max) {
  return Math.floor(Math.random() * (max - min) + min);
};

我一直在尝试编写一个函数,但失败了,该函数将允许创建 4 个对象的数组,因此每个对象的数据将在创建时重新生成。我的功能:

var createArr = function () {
   var arr = [];
      for (var i = 0; i < 5; i++) {
      arr.push(obj);
      }
   return arr;
};

换句话说,我希望得到这种数组:

var arr = [{price:40, rooms:2}, {price:23, rooms:4}, {price:99, rooms:2}, {price:191, rooms:3}];

但我不断收到这个:

var arr = [{price:40, rooms:2}, {price:40, rooms:2}, {price:40, rooms:2}, {price:40, rooms:2}];

非常感谢您的帮助!

UPD。感谢每个提出更复杂的方法来解决我的问题的人。一旦我在 JS 方面取得进展,我将再次重新检查此线程!

最佳答案

看起来您重复使用了该对象来一遍又一遍地推送,并且由于同一个对象,它使用最新值推送相同的对象引用。

为了克服这个问题,您需要为每个循环创建一个新对象,并使用 short hand properties 分配随机值。 .

// inside the loop

let price = getRandomNumberRange(10, 200),
    rooms = getRandomNumberRange(1, 5);

array.push({ price, rooms }); // short hand properties

关于javascript - 如何编写一个函数来创建一定长度的对象数组?对象具有自定义生成的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62233565/

相关文章:

java - Queue<E>接口(interface)的实现

javascript - 将对象数组推送到数组进行排序

javascript - 使用 Jquery 删除整个模态框

javascript - 如何防止 keydown 事件监听器在输入文本字段时监听?

javascript - AngularJS 中的链式 promise /需求

javascript - 在 angularJS 中取消后不会检查 radio

php,从mysql排序一个数组

java - 为二维数组编写 for 循环?

swift - WorldNode 与对象生成冲突

javascript - 如果匹配公共(public)值,Vanilla Javascript 将 JSON 数组对象合并到嵌套数组中