I want to be able to iterate over a queue, each time adding some new elements to the queue, but removing elements that I have dealt with.
queue = [[0,8],[1,2],[2,4]]
for [x,y] in queue
for i in [1,2,3]
# Do something that results in a new coordinate..
queue.push([newx,newy])
The problem is, I am not sure what the best way to do this would be.
If I delete each element from the array as I iterate, it leaves an empty element in the array.
If I copy the array, empty it by doing queue.length = 0 and then iterate over the copy, that won’t work because doing a slice to copy doesn’t work when the array contains objects.
What would be the correct way to do this?
What you should do is modify a copy of the array:
I’m not sure what you mean when you say
You may have been misled by something you read elsewhere. Using
sliceto do an array copy works perfectly well with objects:What it won’t do is do a deep copy of the objects stored by the array. But since you’re just doing insertions and deletions to
queue, that’s perfectly acceptable.