mi piacerebbe per rimuovere alcuni membri di un oggetto (per amor di discussione, quelli le cui chiavi iniziare con '_'). Qual è un modo elegante per farlo? Il modo ingenuo sarebbe:buon linguaggio per filtrare i membri di un oggetto (Javascript)
for (var i in obj)
if (i[0] === '_')
delete obj[i];
ma che modifica l'oggetto sottostante durante l'iterazione. Nel nodo almeno Credo che avrei potuto
Object.keys(obj).forEach(function (i) { if (i[0] === '_') delete obj[i]; });
o riavviare l'iterazione ogni volta che qualcosa viene eliminato con un ciclo nidificato imbarazzante.
Ci sono delle soluzioni migliori?
EDIT: Nel test solo ora, in node.js almeno, la soluzione ingenua sembra davvero funzionare. È certamente possibile che per ... in (deve essere) essere implementato in sicurezza. Qualcuno sa?
La modifica dell'oggetto durante il ciclo 'for ... in' causa un problema? Non vedo come sia molto diverso da modificare l'oggetto nella callback 'forEach()', dopo tutto. – Pointy
sto presumendo che 'Object.keys' prende un'istantanea delle chiavi nell'oggetto. Forse non è vero. – Grumdrig
... e presumendo che 'for (... in ...)' non catturi un'istantanea dell'oggetto. – Grumdrig