Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中为对象属性提供随机属性值_Javascript - Fatal编程技术网

在Javascript中为对象属性提供随机属性值

在Javascript中为对象属性提供随机属性值,javascript,Javascript,我正在尝试创建一个基于平铺的游戏,并希望为每种类型的平铺提供随机颜色,例如: Game.Glyph = function(properties) { properties = properties || {}; this._char = properties['character'] || ' '; this._foreground = properties['foreground'] || 'white'; }; Game.Tile.floorTile = new G

我正在尝试创建一个基于平铺的游戏,并希望为每种类型的平铺提供随机颜色,例如:

Game.Glyph = function(properties) {
    properties = properties || {};
    this._char = properties['character'] || ' ';
    this._foreground = properties['foreground'] || 'white';
};

Game.Tile.floorTile = new Game.Tile({
    character: '.',
});
然后假设我已经用
Game.Tile.floorTile
(以及其他)填充了
map
数组

for(设x=0;x

这导致每个地砖要么是红色,要么是黄色,而不是随机分布。我怎样才能像我在上面尝试的那样给每个磁贴一个随机颜色?

如果您只想在两个值之间进行选择,a可以很容易地与产生0到1之间的值的
Math.random()相结合:

map[x][y]._foreground = Math.random() > 0.5 ? 'red': 'yellow'
例如,使用简化版本的代码:

let map=[[{},{}],{},{}]]
for(设x=0;x<2;x++){
for(设y=0;y<2;y++){
映射[x][y]。_前台=Math.random()>0.5?'red':'yellow'
}
}

console.log(map)
如果您只想在两个值之间进行选择,a可以轻松地与
Math.random()结合使用,后者生成0到1之间的值:

map[x][y]._foreground = Math.random() > 0.5 ? 'red': 'yellow'
例如,使用简化版本的代码:

let map=[[{},{}],{},{}]]
for(设x=0;x<2;x++){
for(设y=0;y<2;y++){
映射[x][y]。_前台=Math.random()>0.5?'red':'yellow'
}
}

console.log(map)
在JS数组原型中没有
random()
方法我有一个我正在使用的实现,应该提到。在JS数组原型中没有
random()
方法我有一个我正在使用的实现,应该提到。谢谢,三元组非常整洁。然而,我仍然有我原来的问题,每一块地砖要么变成黄色,要么变成红色,这不是两者的随机混合。你看到了吗?你在@AlwaysNedinghelp上面运行的代码片段?没有,这很奇怪-当我改变单个地板的颜色时,每隔一块地板的颜色也会改变一次。@AlwaysNedinghelp听起来你可能已经在矩阵中填充了对一个实例的大量引用
Game.Tile
。创建矩阵时,需要为数组的每个元素调用
new Game.Tile()
。你说得对:)我花了一段时间进行重构,但感谢你为我指出了正确的方向^。^谢谢,三元结构非常整洁。然而,我仍然有我原来的问题,每一块地砖要么变成黄色,要么变成红色,这不是两者的随机混合。你看到了吗?你在@AlwaysNedinghelp上面运行的代码片段?没有,这很奇怪-当我改变单个地板的颜色时,每隔一块地板的颜色也会改变一次。@AlwaysNedinghelp听起来你可能已经在矩阵中填充了对一个实例的大量引用
Game.Tile
。创建矩阵时,需要为数组的每个元素调用
new Game.Tile()
。你说得对:)我花了一段时间进行重构,但感谢你为我指明了正确的方向^^