この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿または 公式回答ページからも解答例が見つかるかもしれませんよ。

BFE.devでのAI解答例 - JavaScript コーディング問題
17. DOM element storeを作る

以下はMapを利用しないNodeStoreの実装例です。

class NodeStore {  constructor() {    this.store = {};  }  set(node, value) {    const id = this.getId(node);    if (!id) {      return;    }    this.store[id] = value;  }  get(node) {    const id = this.getId(node);    if (!id) {      return undefined;    }    return this.store[id];  }  has(node) {    const id = this.getId(node);    return !!id;  }  getId(node) {    if (node.nodeType !== Node.ELEMENT_NODE) {      return false;    }    if (!node.hasAttribute('data-node-store-id')) {      node.setAttribute('data-node-store-id', String(Date.now()));    }    return node.getAttribute('data-node-store-id');  }}

この実装では、DOM要素にランダムなIDを追加することで、ノードを識別します。 setget、およびhasメソッドを提供し、 setメソッドでは、値をストア内のIDに対応するエントリに設定します。 getメソッドはIDに対応するエントリから値を返し、 hasメソッドはノードがストア内に存在するかどうかを確認します。

この実装は、データの追加、取得、および存在確認がすべてO(1)で実行できるため、時間の面でも空間の面でも効率的です。