3

JavaScript オブジェクトとそのプロパティ カウントのサイズ制限を実装したいと考えています。オブジェクトに新しいプロパティが追加されたときに、更新された最も古いものを削除する必要があります。

次のオブジェクトを考えてみましょう。ここでは、テキスト内の各文字の出現回数をカウントします (ただし、最新の 2 文字のみ)。

var occurrences = {a: 1, d: 2}

読むaと1ずつ増えますoccurrences['a']。しかし、その後、hを削除する必要がdあることがわかりましたa。次に、私のオブジェクトは次のようになります。

{a: 2, h: 1}

この目的でオブジェクトを使用する正当な理由があるため、たとえば、パフォーマンスが非常に重要であるため、並べ替えられた配列を使用できません。

4

2 に答える 2

2

node.js を使用している場合は、オブジェクト プロパティの驚くべき機能を利用できます。オブジェクト プロパティは、追加された順序で返されます。したがって、いくつかのプロパティを持つオブジェクトを定義できます。

var array = { fake1: 'fake', fake2: 'fake' };

そして、新しいプロパティを追加するたびに、最初のプロパティを削除します:

for (var i in array) {
  delete array[i];
  break;
}

プロパティを更新するときは、それを削除してから再度追加する必要があるため、最後に再び追加されます。

シンプルですが非常に効果的です。オブジェクトには常に最新の 2 つのプロパティがあります。要素を操作するたびに、余分なデータを保持したり、一連のプロパティを調べたりする必要はありません。

ブラウザ内の JavaScript エンジンでこれをテストしていません。言語は保証しないため、プロパティの順序に依存するべきではありませんが、どうやらそれも機能するようです。

于 2013-05-25T09:34:56.007 に答える