如何在javascript(p5.js)中比较(对象的)数组(列表)的所有元素



实际上我使用的是p5.js,但我认为函数中内置的js也应该以与javascript中相同的方式工作。

给定的是存储在数组中的动态生成对象的列表。对象具有坐标(x,y(、大小和其他一些属性。这些对象根据其属性(方向、速度(在屏幕上移动

我想写一个函数,在这里我可以检查对象的坐标,如果它们碰撞,它们应该改变方向。例如,为此,我需要将数组中的每个元素与其他元素进行比较。

由于我有很多不知道的元素,我使用进行迭代

for (let i in array)

然后我想弹出第一个元素,并在每个循环的included中将其与数组的其余部分进行比较。

在这个循环之后,我想将这个元素取消到数组中,以便对整个数组执行同样的操作。

我想,pop((的内置函数不会返回这个元素,因为我收到了一个错误,让我思考,这个数组的对象被其他东西更改了。

我该怎么解决?

这是我的这个功能代码:

function checkCollisions() {
for (let i in array_of_objects) {
let element = array_of_objects.pop()
for (let j in array_of_objects) {
if (comparison_of_some_attributes_between(element, array_of_objects[j])) {
some_changes_on_attributes_of(element, array_of_objects[j])
}
array_of_objects.unshift(element)
}
}

您使用的是for each循环,它存储对象,而不是变量(ij(中的索引。因此,您应该只使用j而不是array_of_objects[j]

然而,最重要的是,你应该把

array_of_objects.unshift(element)

第二个for循环的外部(向下移动2行(。否则,您将多次取消提升它,而这种情况应该只发生一次。

此外,(我不确定这在您的原始代码中是否真的相同(,您缺少了一个结束大括号。

相关内容

  • 没有找到相关文章

最新更新