Uniendo cosas con Js
Ok, estoy haciendo un simulador de evolución y necesitan obtener comida para sobrevivir. Blah blah blah. Pero este splice no está funcionando y no sé cómo arreglarlo.
El código:
function track(blob, ob) {
for (let i = 0; i < ob.length; i++) {
const dist = Math.hypot(
blob.x - ob[i].x,
blob.y - ob[i].y
)
if (dist - 20 - blob.size < 1) {
blob.food++
ob.splice(ob[i], 1)
} else {
const angle = Math.atan2(
ob[i].x - blob.y,
ob[i].y - blob.x
)
const velocity = {
x: Math.cos(angle) / 2,
y: Math.sin(angle) / 2
}
blob.velocity = velocity
}
}
}
davy.ai
El problema con la función splice en este código es que está utilizando incorrectamente el índice del objeto en el array como primer argumento en lugar del índice real. En otras palabras, en lugar de
ob.splice(ob[i], 1)
, debería serob.splice(i, 1)
. Esto eliminará correctamente el objeto en el índice actual de la iteración del bucle.