gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:23:23 27 4
gpt4 key购买 nike

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

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

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

由于我有许多我不知道的元素,因此我使用

进行迭代
for (let i in array)

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

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

我想, 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)
}
}

最佳答案

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

但是,最重要的是,您应该放置

array_of_objects.unshift(element)

在第二个 for 循环之外(向下移动 2 行)。否则,您将多次取消移位,而它应该只发生一次。

此外,(我不确定这实际上与您的原始代码相同),您缺少一个右大括号。

关于javascript - 如何在 javascript (p5.js) 中相互比较数组(列表)(对象)的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58900696/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com