为对象元素分配随机值
Assigning Random Values to Object Elements
我正在为对象元素分配 1-50 之间的随机值,我有 5 个对象,我不知道为什么,但所有对象都获得了相同的随机值......
这是我的代码:
var SmileyRed = {
radius: 15,
xspeed: 0,
yspeed: 0,
xpos:350, // x-position of smiley
ypos: 65 // y-position of smiley
};
var SmileyReds = new Array();
for (var i=0; i<5; i++){
SmileyReds[i] = SmileyRed;
SmileyReds[i].xspeed = Math.floor((Math.random()*50)+1);
SmileyReds[i].yspeed = Math.floor((Math.random()*50)+1);
}
SmileyReds[0].xspeed和SmileyReds[3].xspeed具有相同的值,但它们不应该不同吗?
问题是,当你使一个对象等于另一个对象时,新对象是对原始对象的引用,而不是副本。
正在发生的事情是,您正在创建对原始SmileyRed的5个引用。基本上,当你改变一个时,你就改变了所有。因此,循环中仅应用的值是从循环的最后一次传递开始的,前 4 次传递将被覆盖。
您可以更改为:
var SmileyReds = new Array();
for (var i=0; i<5; i++){
/* new object each pass*/
SmileyReds[i] = {
radius: 15,
xspeed: 0,
yspeed: 0,
xpos:350, // x-position of smiley
ypos: 65 // y-position of smiley
};
SmileyReds[i].xspeed = Math.floor((Math.random()*50)+1);
SmileyReds[i].yspeed = Math.floor((Math.random()*50)+1);
}
另一种方法是:
var SmileyRed = function(){
return{
radius: 15,
xspeed: 0,
yspeed: 0,
xpos:350, // x-position of smiley
ypos: 65 // y-position of smiley
};
}
for (var i=0; i<5; i++){
/* new object each pass*/
SmileyReds[i] = SmileyRed();/* note () this time*/
问题是从 0 到 4 的索引包含对同一对象的引用 SmileyRed
。如果要分隔每个迭代,则应为每个迭代创建一个新对象。
因此,您实际上是在每次迭代中更改相同的对象。因此,您将始终使用最后一个随机数(来自最后一个对象)。
通过调用返回对象的函数,每次迭代都会得到一个新对象。如下所示。
var SmileyRed = function() {
return {
radius: 15,
xspeed: 0,
yspeed: 0,
xpos:350, // x-position of smiley
ypos: 65 // y-position of smiley
}
};
var SmileyReds = new Array();
for (var i=0; i<5; i++){
SmileyReds[i] = SmileyRed();
SmileyReds[i].xspeed = Math.floor((Math.random()*50)+1);
SmileyReds[i].yspeed = Math.floor((Math.random()*50)+1);
}
JSfiddle
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 在循环中分配json值时,值被覆盖
- 动态分配GA增强型电子商务跟踪器
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- JavaScript 创建一个随机表生成器并为单元格分配颜色
- 将随机整数分配给数组中的项,summa应该是一个固定的数字
- 为对象元素分配随机值
- 为什么我们将“(keyup)”分配给模板局部变量的随机值以在 Angular2 中更新
- 为变量分配有限集合中的随机元素
- 将随机密码值分配给特定列(单元格)
- 分配随机 ID 不起作用
- 如何使用 javascript 将静态信息分配给随机选择的数据
- 随机为图像分配一个值,然后传递动画
- 如何为链接分配随机颜色
- 随机分配Dribble API调用结果
- 在一年内生成随机日期并分配给变量
- 分配变量OnClick随机动作
- 为什么不是'先发球员不是随机分配的吗
- 我如何在循环中随机分配多个组
- JS:访问随机分配的img属性