Hallo,

Op dit moment heb ik het volgende stukje Javascript:

/**
@method removeSceneById Removes a scene by it's ID
@param {Integer} ID of the scene
**/
_self.removeSceneById = function(sceneId)
{
	_self._scenes.forEach(function(scene, index)
	{
		if (scene.id === sceneId)
		{
			_self._scenes.splice(index, 1);
		}
	});
};


Dit werkt, maar nu wil ik een tweede method maken:

removeScenesById(sceneIds)


Deze krijgt een array binnen met ID's en moet deze uit de array verwijderen.
Maar tijdens het verwijderen veranderen de indexen van de array, nu heb ik gelezen dat je de array moet omdraaien en er dan doorheen moet lopen. Maar dit lijkt niet te werken.

Hoe los ik dit probleem op?

Alvast bedankt!
Gebruik het delete keyword om een waarde te verwijderen. In tegenstelling tot array_slice wordt het item niet werkelijk van de array verwijderd, dus de indices blijven intact. Het enige wat er gebeurd is dat het item als undefined wordt bestempelt (maar net op een andere manier dan dat je de waarde undefined toekent):
[code lang=js]
_self.removeScenesById(sceneIds) {
_self._scenes.forEach(function(scene, index) {
if (scene.id in sceneIds) {
delete _self._scenes[index];
}
});
});[/code]
Als een item undefined is, wordt hij dan overgeslagen door de forEach? Ik gebruik dezelfde soort method namelijk ook voor entities. (En er komen uiteindelijk nogal veel entities)
Als je delete gebruikt wel, als je zelf _self._scenes[index] = undefined doet niet.
Ah oke, dan ga ik deze manier gebruiken, bedankt!

Reageren