以下p5js代码无法正常工作,由于数组中的对象是对花朵的引用,我如何用不同的值初始化对象?
var flowers;
var flower;
function setup()
{
createCanvas(1000,500);
base_x = width/2;
base_y = height - 50;
flowers = [];
flower = {
base_x: 0,
base_y: height - 50,
stem_h: 100,
col: color(255,50,50)
}
for(var i = 0; i < 10; i++)
{
flower.base_x = i * 100;
flower.stem_h = random(50,400);
flower.col = color(
random(0,255),
random(0,255),
random(0,255)
);
flowers.push(flower);
}
}
您可以通过以下三种方法中的任何一种来取消引用花对象,然后将其压入数组:
第flowers.push(flower);
行应为
flowers.push(Object.assign({}, flower));
OR
flowers.push({...flower});
OR
flowers.push(JSON.parse(JSON.stringify(flower)));
如何将不同的对象推入数组,而不是一遍又一遍地更改同一对象。
var flowers = [];
function setup() {
createCanvas(1000, 500);
base_x = width/2;
base_y = height - 50;
for (var i = 0; i < 10; i++) {
// Creates a new object in every iteration.
// And there's no point in defining this variable globally.
var flower = {
base_x: i * 100,
base_y: height - 50,
stem_h: random(50, 400),
col: color(
random(0, 255),
random(0, 255),
random(0, 255)
)
};
flowers.push(flower);
}
}
甚至
var flowers = Array.from({length: 10}, function(_, i){
return {
base_x: i * 100,
base_y: height - 50,
stem_h: random(50, 400),
col: color(
random(0, 255),
random(0, 255),
random(0, 255)
)
};
});