JavaScriptでWeakSetから要素を削除する方法について、`delete()`メソッドを使った具体的な使い方を解説します。
WeakSetのdelete()メソッドとは
`delete()`メソッドは、WeakSetから指定した要素を削除するためのメソッドです。メソッドは削除が成功したかどうかをブール値で返します。
基本的な使い方
const weakSet = new WeakSet();
const obj = { id: 1 };
// WeakSetに要素を追加
weakSet.add(obj);
// 要素を削除
const result = weakSet.delete(obj);
console.log(result); // true削除の成功・失敗
`delete()`メソッドは以下の結果を返します:
- 要素が存在し、削除に成功した場合:`true`
- 要素が存在せず、削除できなかった場合:`false`
const weakSet = new WeakSet();
const obj1 = { id: 1 };
const obj2 = { id: 2 };
weakSet.add(obj1);
console.log(weakSet.delete(obj1)); // true(存在する要素の削除)
console.log(weakSet.delete(obj2)); // false(存在しない要素の削除)注意点
1. WeakSetには、オブジェクトのみを格納できます。プリミティブ値は使用できません。
const weakSet = new WeakSet();
// これらは無効な操作です
weakSet.add(1); // TypeError
weakSet.add("string"); // TypeError
weakSet.delete(1); // TypeError2. 存在しない要素を削除しようとしてもエラーは発生しません。単に`false`が返されます。
実践的な使用例
class User {
constructor() {
this.data = { name: "John" };
}
}
const activeUsers = new WeakSet();
const user1 = new User();
const user2 = new User();
// ユーザーを追加
activeUsers.add(user1);
activeUsers.add(user2);
// ユーザーを削除(ログアウト時など)
if (activeUsers.delete(user1)) {
console.log("ユーザーが正常に削除されました");
} else {
console.log("ユーザーが見つかりませんでした");
}まとめ
WeakSetの`delete()`メソッドは:
- 要素の削除に使用
- 戻り値は削除の成功(`true`)・失敗(`false`)
- オブジェクトのみを対象とする
- エラーに強い設計
これらの特徴を理解することで、WeakSetを使用したメモリ効率の良いプログラミングが可能になります。