javascript - 如何编写一个创建一定长度对象数组的函数?对象具有自定义生成的数据
问题描述
我有一个随机生成数据的对象:
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 中取得进展,我将再次重新检查这个线程!
解决方案
看起来您重复使用该对象来一遍又一遍地推送,并且由于相同的对象,它会推送具有最新值的相同对象引用。
为了克服这个问题,您需要为每个循环创建一个新对象,并使用简写属性分配随机值。
// inside the loop
let price = getRandomNumberRange(10, 200),
rooms = getRandomNumberRange(1, 5);
array.push({ price, rooms }); // short hand properties
推荐阅读
- generics - 带有泛型的 Kotlin 继承/声明
- javascript - React Router 不渲染组件
- javascript - NodeJs Async 发出值 mongoose 保存和查找
- python - 如何在 Matplotlib 中使用按钮在图表之间切换
- java - 写入后如何等待firebase的响应
- spring - 控制器或 RestController
- java - 在 Eclipse IDE 中运行没有包的 Java 代码
- reactjs - 使用 TypeScript 反应 Refs:无法读取未定义的属性“当前”
- java - 在排序方法中使用匿名类
- ios - 使用 Xcode 10.1 + Carthage 在同一个 Cartfile 中构建 Alamofire 和 Texture 时出错