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

BFE.devでのAI解答例 - JavaScript コーディング問題
80. URLSearchParamsを実装する

class MyURLSearchParams {  constructor(queryString) {    this.params = {};    if (queryString) {      const query = queryString.startsWith("?")        ? queryString.slice(1)        : queryString;      const pairs = query.split("&");      pairs.forEach((pair) => {        const [key, value] = pair.split("=");        this.append(key, value);      });    }  }  append(name, value) {    if (!this.params[name]) {      this.params[name] = [];    }    this.params[name].push(value);  }  delete(name) {    delete this.params[name];  }  entries() {    return Object.entries(this.params);  }  forEach(callback) {    this.keys().forEach((key) => {      callback(this.get(key), key, this);    });  }  get(name) {    return this.params[name] ? this.params[name][0] : null;  }  getAll(name) {    return this.params[name] || [];  }  has(name) {    return this.params[name] !== undefined;  }  keys() {    return Object.keys(this.params);  }  set(name, value) {    this.params[name] = [value];  }  sort() {    const sortedParams = {};    Object.keys(this.params)      .sort()      .forEach((key) => {        sortedParams[key] = this.params[key];      });    this.params = sortedParams;  }  toString() {    const paramPairs = [];    for (const [name, values] of Object.entries(this.params)) {      for (const value of values) {        paramPairs.push(`${encodeURIComponent(name)}=${encodeURIComponent(value)}`)      }    }    return paramPairs.join("&");  }  values() {    return Object.values(this.params).reduce((acc, curr) => {      return [...acc, ...curr];    }, []);  }  [Symbol.iterator]() {    const entries = this.entries();    let index = 0;    return {      next: () => {        if (index < entries.length) {          const result = { value: entries[index], done: false };          index++;          return result;        }        return { value: undefined, done: true };      },    };  }}