JavaScriptでWeakSet要素確認!has()メソッド解説

投稿日 2025年02月07日   更新日 2025年02月07日

WeakSetの要素確認には`has()`メソッドを使用できます。`has()`メソッドは、指定したオブジェクトがWeakSetに含まれているかどうかを確認し、true/falseを返します。

WeakSet.has()メソッドの基本的な使い方

const weakSet = new WeakSet();
const obj = {};

weakSet.add(obj);
console.log(weakSet.has(obj)); // true
console.log(weakSet.has({}));  // false
`has()`メソッドは引数にオブジェクトを受け取り、そのオブジェクトがWeakSetに存在する場合は`true`を、存在しない場合は`false`を返します。

注意点と制限事項

1. WeakSetにはオブジェクトのみを格納できます。プリミティブ値(数値、文字列など)は格納できません。
const weakSet = new WeakSet();
weakSet.add("文字列"); // TypeError: Invalid value used in weak set
2. WeakSetは弱い参照を持つため、格納したオブジェクトへの参照がなくなると自動的にガベージコレクションの対象となります。
let obj = { id: 1 };
const weakSet = new WeakSet([obj]);
console.log(weakSet.has(obj)); // true

obj = null; // objへの参照を削除
// この時点でWeakSetからobjが削除される可能性がある

実践的な使用例

WeakSetは、オブジェクトの一意性を管理する場合に便利です。
const visited = new WeakSet();

function processUser(user) {
    if (visited.has(user)) {
        console.log('このユーザーは既に処理済みです');
        return;
    }
    
    visited.add(user);
    console.log('ユーザーを処理しました');
}

const user = { name: 'John' };
processUser(user); // ユーザーを処理しました
processUser(user); // このユーザーは既に処理済みです

まとめ

  • `has()`メソッドはWeakSetに特定のオブジェクトが存在するかを確認できます
  • WeakSetにはオブジェクトのみを格納可能です
  • メモリリークを防ぐために、オブジェクトへの参照が削除されると自動的にWeakSetからも削除されます
  • オブジェクトの重複処理防止などに活用できます
WeakSetの`has()`メソッドを使用することで、効率的にオブジェクトの存在確認が可能になり、メモリ管理も最適化されます。
Resumy AI監修者
監修者: RESUMY.AI編集部

ヨーロッパのテックハブであるロンドンにて、シニアデベロッパーとしてチームを率いた後、オンライン教育プラットフォームUdemyでモダン技術に関する講義を配信する「Daiz Academy」を設立。現在はAIテクノロジー企業 Chott, Inc.を運営しています。

監修者: RESUMY.AI編集部
Resumy AI監修者

ヨーロッパのテックハブであるロンドンにて、シニアデベロッパーとしてチームを率いた後、オンライン教育プラットフォームUdemyでモダン技術に関する講義を配信する「Daiz Academy」を設立。現在はAIテクノロジー企業 Chott, Inc.を運営しています。

AI職務経歴書作成サービス RESUMY.AIAI職務経歴書作成サービス RESUMY.AI
60秒で完了