オブジェクトの特定のメンバーを削除したいと思います(引数のために、キーが '_'で始まるもの)。これを行うためのエレガントな方法は何ですか?純粋な方法は次のようになります。オブジェクトのメンバーを除外するための良いイディオム(JavaScript)
for (var i in obj)
if (i[0] === '_')
delete obj[i];
しかし、それは反復中に基礎となるオブジェクトを変更します。ノードでは、少なくとも私は、毎回何かが厄介なネストされたループを削除しています。私は
Object.keys(obj).forEach(function (i) { if (i[0] === '_') delete obj[i]; });
または反復を再起動できたと思います
もっと良い解決策はありますか?
EDIT:ちょうど今、node.jsのテストでは、少なくとも純粋な解決法が機能しているようです。確実に実装する必要があるのは確かです。誰でも知っていますか?
for for ... inループ中にオブジェクトを変更すると問題が発生しますか?結局のところ、 'forEach()'コールバックでオブジェクトを変更するのとはどう違うのか分かりません。 – Pointy
私は、 'Object.keys'がオブジェクトのキーのスナップショットを取ると仮定しています。たぶんそれは真実ではないでしょう。 – Grumdrig
... 'for(... in ...)'がオブジェクトのスナップショットを取っていないと仮定します。 – Grumdrig