我有一个数组,其中包含' particle'物体,每个粒子参数; x位置,y位置,投影角度和速度。
我正在尝试访问数组中每个粒子的x和y位置以执行进一步的计算,但我遇到了语法问题。以下是代码的简短摘要:
var Particle( x, y , angle, velocity) {
// here the implementation of the dynamics of the particles are coded
}
// here 100 random particle objects
// are pushed to the array
var particleArray = [];
for(var i =0; i < 100; i++){
particleArray.push(new Particle(
(Math.random()* ( innerWidth - radius*2) + radius),
(Math.random()* ( innerHeight - radius*2) + radius),
Math.PI*Math.random(), 5 ))
}
&#13;
现在我想尝试访问其中一个组件 ,例如:数组中第47个粒子的x位置,但我遇到的问题就像我上面用语法说的那样,或者我是否正确地解决了这个问题。
答案 0 :(得分:2)
您可以通过方括号表示法访问数组中的第n个对象(请注意,数组是0索引的):[n-1]
。
然后,您可以通过点符号访问某个属性:object.property
。
var x = particleArray[46].x
答案 1 :(得分:1)
您应该能够使用particleArray[46].x
访问x位置第47个粒子。 (由于数组是&#34;零索引&#34;,第一个粒子是particleArray[0]
,第二个是particleArray[1]
等。)
答案 2 :(得分:0)
这是一个简单的例子。
请注意,javascript中的数组是基于零的索引(第一个位置是 零而不是一个)因此第47个是索引46
var particles = [];
var innerWidth = 10;
var innerHeight = 5;
var radius = 2;
function Particle(x, y, angle, velocity){
this.x = x;
this.y = y;
this.angle = angle;
this.velocity = velocity;
}
function generateParticles(numberOfParticles){
var tempParticles = [];
for(var i = 0; i < numberOfParticles; i++){
tempParticles.push(
new Particle(
( Math.random() * (innerWidth - radius * 2) + radius) ,
( Math.random() * ( innerHeight - radius * 2) + radius) ,
Math.PI*Math.random(),
5
)
);
}
return tempParticles;
}
particles = generateParticles(100);
console.log(particles[46])
&#13;